编程界的两大阵营 面向过程 和 面向对象 区别: 面向过程: 事物比较简单,可以用线性思维去解决 面向对象: 事物比较复杂,使用简单的线性思维无法解决 共同点: 面向过程和面向对象都是解决实际问题的一种思维方式 二者相辅相成,并不是对立的 解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系、方便我们分析整个系统; 具体到微观操作,任然使用面向过程方式来处理
面向对象 相比较函数,面向对象是更大的封装根据职责在一个对象中封装多个方法 1.在完成某一个需求前,首先确定职责--要做的事情(方法) 2.根据职责确定不同的对象,在对象内部封装不同的方法(多个) 3.最后完成的代码,就是顺序地让不同的对象调用不同的方法
特点 1.注重对象和职责,不同的对象承担不同的职责 2.更加适合应对复杂的需求变化,是专门应对复杂项目开发,提供的固定套路 3.需要在面向过程基础上,再学习一些面向对象的语法
类与对象 类和对象是面向对象编程的两个核心概念 类: 类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用 1.特征被称为属性 2.行为被称为方法 类就相当于制造飞机的图纸,是一个模板,是负责创建对象的 类是多个类似事物组成的群体的统称。能够帮组我们快速理解和判断事物的性质。 对象: 1.对象是由类创建出来的一个具体存在,可以直接使用 2.由哪一个类创建出来的对象,就拥有在哪一个类中定义的 属性和方法 3.对象就相当于与用图纸制造的飞机 4.在程序开发中,应该先有类,再有对象 类和对象的关系 1.类是模板,对象是根据类这个模板创建出来的,应该先有类,再有对象 2.类只有一个,而对象可以有很多个 不同的对象之间,属性可能会各不相同 3.类中定义了什么属性和方法,对象中就有什么属性和方法,不可能多,也不可能少 类的设计 在使用面向对象开发前,应该首先分析需求,确定一下,程序中需要包含哪些类 例如: 开发植物大战僵尸的游戏,就需要有植物和僵尸 定义类: 向日葵 豌豆射手 冰冻射手 普通僵尸 铁桶僵尸 定义对象:生命值 生命值 生命值 生命值 生命值 生产阳光() 发射子弹() 发射冰冻子弹() 咬() 铁通 摇晃() 移动() 咬() 移动() 在程序开发中,要设计一个类,通常需要满足一下三个要素 1.类名 这类事物的名字,满足大驼峰命名法 2.属性 这类事物具有什么样的特征 3.方法 这类事物具有什么样的行为 大驼峰命名法: CapWords 1.每一个单词的首字母大写 2.单词与单词之间没有下滑线 类名的确定 名词提炼法,分析整个物业流程,出现的名词,通常就是找到的类 属性和方法的确定 1.对对象的特征描述,通常可以定义成属性 2.对象具有的行为(动词),通常可以定义成方法 提示: 需求中没有涉及的属性或者方法在涉及类时,不需要考虑 例: 需求: 小明今年18岁,身高1.75,每天早上跑完步,回去吃东西 小美今年17岁,身高1.65,小美不跑步,小美喜欢吃东西 按照此需求定义类和对象 类: Person 对象: name age height run() eat()
数据类型: 不同的数据类型属于不同的类 使用内置函数查看数据类型 print(type(100)) #<class "int"> print(type(99)) #<class "int"> print(type(520)) #<class "int"> 返回值都是int类型,这些数都是int类,而100、 99、 520都是int类里的对象 100、 99、 520都是int类之下包含的相似的不同的个例,这个个例专业术语称为实例或对象
面向对象基础语法: dir内置函数(知道) 1.在Python中对象几乎是无所不在的,我们之前学习的变量、数据、函数、都是对象 2.在python中可以使用内置函数dir传入表示符/数据,可以查看对象内的所有属性及方法 使用方法:dir(函数名) 提示__方法名__格式的方法是python提供的内置方法/属性 1.__new__ 创建对象时,会被自动调用 2.__init__ 对象被初始化时,会被自动调用 3.__del__ 对象被从内存中销毁前,会被自动调用 4.__str__ 返回对象描述信息,print函数输出使用 利用好dir()函数,在学习时很多内容就不需要死记硬背了