一、面向对象的概念
面向对象oop(onject oriented programming),与之对应的还有面向过程,向C语言就是面向过程的
理解过程和函数?
过程:是早期的一个编程概念,过程类似于函数,只能执行,但是没有返回值
函数:不仅能执行,还可以返回结果(return)
二、深刻理解什么时面向对象和面向过程
面向过程:—-侧重于怎么做?
把完成某个需求的所有步骤从头到尾逐步实现 根据开发要求,将某些功能独立的代码封装成一个又一个函数 最后完成的代码,就会死顺序的调用不同的函数
特点:
注重步骤与过程,不注重职责分工 如果需求复杂,代码会变得很复杂 开发复杂项目,没有固定的套路,开发难度很大
面向对象:—侧重于谁来做?
相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法
在完成某个需求之前,首先确定职责—要做的事情(方法) 根据职责确定不同的对象,在对象内部封装不同的方法(或是多个方法) 最后完成代码,就是顺序的让不同对象调用不同的方法
特点:
注重对象和职责,不同的对象承担不同的职责 更加适合复杂的需求变化,是专门应对复杂项目的开发提供的固定套路 需要在面向过程的基础上,再学习一些面向对象的语法
面向对象编程有Python 、JAVA 、C++
三、类与对象
在程序开发中,先有类,再有对象
类:是对一群具有相同特征或行为的事物的一个统称,不能直接使用(比如:在飞机制造前先设计的哪个图纸,图纸就是一个类,可以用着一个图纸制作出好多飞机,但是,图纸是不能飞上天的)特征被称为属性,行为被称为方法
对象:有类创建出来的一个具体存在的,可以直接使用的(飞机可以飞上天)
类的设计:
在使用面相对象开发前,应该首先分析需求,确定一下,程序中需要包含哪些类!
1.类名:这类事物的名字i,满足大驼峰命名法
大驼峰命名法:每个单词的首字母大写,单词与单词之间没有下划线
2.属性:这个类创建出来的对象有什么样的特征
2方法:这个类创建出来的对象有什么样的行为
四、实例
案例【1】:
小明今年18岁,身高1.75,每天早上要跑步,会去吃东西 小美今年17岁,身高1.65 小美不跑步,小美喜欢吃东西
Person() #类名 name #属性 age height run() #方法 eat()
案例【2】:
一只黄颜色的狗狗叫大黄 看见生人旺旺叫 看见家人摇尾巴
Dog() #类名 name #属性 color shout() #方法 shark()
五、定义之包含方法的类
class 类名: def 方法1(self): pass def 方法2(self): pass
创建对象:对象变量=类名
%x:打印格式为十六进制数
%d:打印格式为十进制数
实例:需求:小猪爱吃饭,小猪爱睡觉
class pig: def eat(self): print '小猪爱吃饭' def sleep(self): print '小猪爱睡觉' Pig = pig() Pig.eat() Pig.sleep() addr= id(Pig) print addr print '%x' %addr print '%d'%addr
六、用相同的类可以创建不同的对象
案例【1】
class pig: def eat(self): print '小猪爱吃饭' def sleep(self): print '小猪爱睡觉' Pig = pig() Pig.eat() Pig.sleep() addr= id(Pig) print addr print '%x' %addr print '%d'%addr #用相同的类可以创建不同的对象 lazy_pig=Pig lazy_pig.eat() lazy_pig.sleep() print lazy_pig lazy_pig2=lazy_pig print lazy_pig2