编程界的两大阵营
面向过程 和 面向对象
区别:
面向过程:
事物比较简单,可以用线性思维去解决
面向对象:
事物比较复杂,使用简单的线性思维无法解决
共同点:
面向过程和面向对象都是解决实际问题的一种思维方式
二者相辅相成,并不是对立的
解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系、方便我们分析整个系统;
具体到微观操作,任然使用面向过程方式来处理
面向对象
相比较函数,面向对象是更大的封装根据职责在一个对象中封装多个方法
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)) #
print(type(99)) #
print(type(520)) #
返回值都是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()函数,在学习时很多内容就不需要死记硬背了