zoukankan      html  css  js  c++  java
  • 面向对象编程day1

    1.面向过程编程与面向对象编程.

    ①面向过程编程:

    是一种编程思想,就是前辈程序员发现的一种比较号的编程方法
    过程指的是 先干什么 再干什么,完成一个事情所有的具体步骤
    优点:把复杂的问题流程化,简单化,降低开发难度
    缺点:扩展差, 再当前这种情况下 用户需求千变万化 对扩展性要求非常高
    使用场景:不需要扩展,或是对扩展性要求不高,例如linux内核,shell 脚本
    案例: 把大象装进冰箱 需要几步
    1.打开冰箱
    2.装进大象
    3.关闭冰箱
    面向过程中我们关注的点是,完成这个任务,具体的步骤 一步一步去完成.
    ----------------------------------------------------------------------------------------------------------
    ②面向对象编程:
    也是一种编程思想
    核心是对象
    什么是对象:在现实生活中实实在在存在的,具备自己的特征和行为的事物
    反过来说 对象就是 特征和行为(技能)的结合体
    如何来区分:如果能够准确的找到一个事物,它就是一个对象
    面向对象编程:我们关注的点是.使用什么样的对象可以完成我的任务
    例如:把大象装进冰箱,什么样的对象可以帮我完成这个任务,只要找到这个对象,命令它来做事情即可
    你从一个操作者 变成了指挥者, 例如:西游记中的如来,他要完成一个传经,要把经书传到东土大唐取,
    本来要自己去,但是太麻烦,所以找了唐僧师徒五个对象,来帮他完成这个任务

    优势: 1.对于指挥者(程序员)来说,不需要再关心具体步骤
    2.扩展性,一个单独的个体的特征或行为发生变化时 不会影响到别人

    缺点: 1.程序的复杂度变高,你得需要设计这个些对象,注意要避免过度设计得问题
    2.程序得执行结果可控性低
    ③类与对象
    类就是分类 类型的意思
    定义:一堆具备相同特征和行为的事物的抽象概念,不实际存在
    先有类还是先有对象:
    生活中:
    生活中类怎么来的,是通过对象的特征和行为抽取而来,
    所以是先有对象才有了类

    编程中:
    必须是先有类 才能有对象,因为你必须先告诉程序,你这个对象有什么样的特征和行为

    类的作用:用于描述该类的对象具备什么样的特征和行为

    语法

    class关键字后跟类名,类名规范(大写开头,驼峰命名法)

    class SHOldboyStudent:
    # 描述该类对象的特征
    school = "上海Oldboy"
    name = "矮根"
    age = 68
    gender = "unknown"
      def say_hi(abc):
      print(abc)
      print("hello oldBoy")
     

    在定义阶段
    只要包含该类的py被执行 就会做两件事情
    1.就会创建类的名称空间
    2.执行代码 将产生的名称放入名称空间

    使用类中的属性:

    print(SHOldboyStudent.__dict__)

    print(SHOldboyStudent.__dict__['name'])

    print(SHOldboyStudent.name)

    使用类中的函数
    print(SHOldboyStudent.__dict__["say_hi"])
    print(SHOldboyStudent.say_hi)
    使用类直接调用类中函数时 与普通函数没有任何区别 位self仅仅是一个置参数
    SHOldboyStudent.say_hi(10)

    创建对象

    class OldboyStudent:
    (如果每个对象的这个属性都相同 才应该定义到类中 比如所有人的学校都是上海Oldboy)
    school = "上海Oldboy"

    语法: 在类名后加括号 与调用函数写法相同

    stu = OldboyStudent()

    访问对象的属性
     print(stu.school)
    print(OldboyStudent.school)

    修改属性的值
     stu.school = "北京Oldboy"
     print(stu.school)

    增加属性
     stu.room_num = "1008"
     print(stu.room_num)

     删除属性
    del stu.room_num
    print(stu.room_num)

    对象与类的名称空间是独立的,为对象的属性添加或修改值,不会对类中产生影响.

    对象的属性查找顺序:对象自己的名称空间->类的名称空间

    __init__函数

    __init__称之为初始化函数 它会在创建对象的时候自动执行
     创建对象时
     1.创建一个空对象
     2.执行__init__函数 并且自动传入了这个对象

    该函数的作用,就是为对象的属性赋初始值,属性添加到对象的名称空间中.

    def __init__(self,name,color,age,gender):
      print("狗__init__执行了")
      print(self)
      self.name = name
      self.age = age
      self.color = color
      self.gender = gender

    1. 使用场景 需要为每个对象定制不同的属性值
    2.__init__在创建对象后自动执行
    3.第一个self参数 指的是这个对象本身 不需要手动传值

  • 相关阅读:
    日志工具——slf4j
    统一建模语言——UML
    Java基础——网络编程
    Java基础——语法基础
    Java基础——NIO(二)非阻塞式网络通信与NIO2新增类库
    Java基础——NIO(一)通道与缓冲区
    动态加载script文件的两种方法
    asp.net 通用的连接数据库实例代码
    Nginx用户认证配置方法详解(域名/目录)
    js冒泡法和数组转换成字符串示例代码
  • 原文地址:https://www.cnblogs.com/endlesswaltz/p/9830418.html
Copyright © 2011-2022 走看看