面向对象
·面向对象的思想
a=10 int 类型的对象 str='hehe' str()#出错不能够同时引用内置方法
第一个面向对象的语言:SamlLTalk
C语言(单纯面向过程的语言)-->c++加入面向对象的思想
--->Java 面向对象的思想革命(纯面向对象的思想)
Python :面向对象的思想
面向对象OOP:面向对象的编程object oritented programme
·对象
万物皆对象:一切客观存在的事物
1、有什么:属性2、能做什么:方法
对象:属性+方法(电脑)
对象的属性:
对象的属性可能也是一个对象
对象的方法:
对象方法的使用者又是一个对象
·客观世界是由对象组成的
1、小对象组成了大对象(小对象是大对象的属性)
2、对象彼此之间方法调用
·如何建立解题思想
例:北京---->上海---->1、找对象(怎么去):找到交通运输方式(高铁,汽车,飞机,小黄车)2、找方法(怎么做):调用交通工具(高铁)运输方法
·解决客观问题:
1、把解决问题所需要的对象准备好 2、对象之间如何配合,完成需求
面向过程:
北京-保定-石家庄-邯郸-郑州-杭州-上海虹桥
面向对象:
北京---上海虹桥
小结:
1、面向过程的编程思想:要把每一步细化到十分精细,只考虑过程 2、面向对象的编程思想:只需要找到合适的对象,调用合适的方法,过程是次要考虑的
客观世界由对象组成,处理问题要先找到对象,其次找到方法,对象之间需要彼此调用,
小对象组成大对象。
面向对象在计算机领域中的使用
计算机需求,来源于客观世界:
把客观世界的需求用计算机来实现
淘宝、QQ、微信。
用计算机解决问题:同样用面向对象的思想解决,和我们的现实世界有高度统一
(生活中如何解决这个问题,计算机就这么解决)
·计算机中的对象中
在PVM虚拟机中的一块连续存储空间(数据)
创建一个学生管理系统:
1、人工:建立档案(花名册)--记录学生的信息(管理的学生)2、计算机: 建立一个档案---记录学生的信息(管理学生的对象--一块连续的存储空间)
学生:
1、姓名:name=‘小明’
2、班级:class=‘三年二班’
3、性别:sex=‘男’
4、年龄:age=‘10’
·小结
面向对象的思想,为解决生活中的问题提供了解决思路,应对复杂的需求
如何做更加合理,越接近现实生活,越合理
1、各司其职,对象应该保持简单性2、弱耦合性,对象与对象之间的关系,联系尽量弱化3、可重复性,创建的对象如果下一次拿过来可以直接使用print()4、可扩展性,在原有功能基础之上增加新的功能
OOP
面向对象的编程 object oriented programing
1、面向对象的语法正确 2、拥有面向对象的思想
类
1、类是对象共性的抽象
2、类是客观对象在人脑中的主观反应,人对对象的一种认识
3、类是对象的模板(通过类取创建对象)
·如何编写一个类
先定义属性,方法
关键字:classclass类名:属性:变量 类变量(全局变量)方法:函数class Student:name=Nonesquad=Nonesex=Noneage=Nonedef learn(self): print ('Student should learn hard')def doHomeWork(self): print ('Student should do homework')s=Student()s.name='Tome's.age='10's.squad='class 3 grade 4's.sex='male's.learn()#Student should learn hards.doHomeWork()#Student should do homeworkprint s.name#Tomeprint s.age#10print s.squad#class 3 grade 4print s.sex#male
·方法
1、方法的声明(能做什么):
2、方法的实现()
def 方法名(self,[其他参数]):
3、self
class Student: name=None squad=None sex=None age=None def doHomeWork(self): print ('Student should do homework') def jiSuan(self,a,b): return a+b s2=Student() s2.doHomeWork()#Student should do homework s2.jiSuan(1,2)#3 1、在调用时候自动传递,不需要人为处理指代当前对象 2、self.属性 用来区分类变量和局部变量 3、方法只能在创建对象后使用
1、init(self): 前面两个下划线后面两个下划线
class Student: name=None squad=None sex=None def __init__(self): print 'this is constructor fuction's=Student()#this is constructor fuction 显示错误在创建对象的时候自动调用,不需要手工调用创建对象也称为实例化对象,创建出来的对象也称为实例2、__init__(self,param1,param2): class Student: name=None squad=None sex=None def __init__(self,a,b): print '%d +%d=%d'%(a,b,a+b) s=Student(3,4)#3 +4=7这样才贵
构造方法
构造方法中也可以有参数,和普通方法有很多的类似之处
3、如果一个类中没有写任何构造方法,则就会默认调用父类的构造方法4、类中可以定义多个构造方法,但是只会以最后一个构造方法为标准。(前面的构造方法被后面的覆盖了) class Student: def __init__(self,name,squad,sex,age): self.name=name self.squad=squad self.sex=sex self.age=age s=Student('Thomas','Class3 Grade5','male','16') print s.name#Thomas print s.age#16 print s.squad#Class3 Grade55、构造方法在开发中常常来给属性赋值6、构造方法可以有return语句,但是只能返回None7、构造方法还可以在return语句后调用方法(构造方法,普通方法) class Student: def learn(self): print ('Student should learn hard') def __init__(self,name,squad,sex,age): self.name=name self.squad=squad self.sex=sex self.age=age return self.learn() s=Student('hehe','heh','hehe','hehe')#Student should learn hard