面向对象程序设计思路
一、面向对象之 对象分析 #面向对象的核心设计:就是对象,一切围绕对象之间的交互。 OOA
0、需求分析 框定程序的功能范围
1、找到程序中涉及到的对象---------->找对象
-------------------------------------------------------------------------------------------------------------------------------------------------------------
二、面向对象设计 OOD
2、 对象分类:从一堆对象中分类。--------------------->对象分类,就找出了程序中的类
3、找各类对象的共同的特征与技能(公共属性),各类对象独有的特征和技能(def __init__(self)) -----------找出类的共有特征、方法,和私有特征、方法
------------------=------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、面向对象编程 OOP
4、先定义类
4、实例化出对象
5、对象之间的交互得到结果
三:代码
class Studens: country='中国' school='老男孩' def __init__(self,cla, teacher,name,age): self.cla=cla self.teacher=teacher self.name=name self.age=age def seach_teacher (self): print("%s的老师%s"% (self.name,self.teacher)) def study(self): print("%s正在学习 %s" % (self.name,self.cla)) s1=Studens('python','egon','张根','24') s1.seach_teacher() s1.study() class Techer: company='oldboy' job='teacher' hobby='woman' def __init__(self,name,age,teach): self.name=name self.age=age self.teach=teach def teaching(self): print('%s在教%s' % (self.name,self.teach)) def seach (self): print('他工作在:%s,目前工作:%s 爱好:%s'%(self.company,self.job,self.hobby)) t1=Techer('alex',35,'python') t1.teaching() t1.seach() t2=Techer('egon',45,'linux') t2.teaching() t2.seach() 执行结果 张根的老师egon 张根正在学习 python alex在教python 他工作在:oldboy,目前工作:teacher 爱好:woman egon在教linux 他工作在:oldboy,目前工作:teacher 爱好:woman
四、对象之间的交互 (对象之间使用方法(函数属性)相互调用,使对方的属性(变量属性)发生变化)
class Ch: #定义楚汉类 def __init__(self,country,name,arms,attack,mount,life): self.country=country #国家 self.name=name #姓名 self.arms=arms #拿的武器 self.attack=attack #攻击值 self.mount=mount #坐骑 self.life=life #生命值 def att(self,enemy): enemy.life-=self.attack print("%s杀%s %s 人马 %s 还剩 %s 人马 !"%( self.name,enemy.name,self.attack,enemy.name,enemy.life)) if enemy.life<=0: print("%s 把 %s 砍死于 %s 之下!"% (self.name,enemy.name,self.mount )) l=Ch('汉','刘邦','小剑',300,'汗血宝马',1000) #实例化出刘邦 x=Ch('楚','项羽','长刀',300,'赤兔马',1000) #实例化出项羽 l.att(x) #刘邦 用攻击方法 讲项羽对象 当做参数传进去,使刘邦对象的 属性发生变化; =====刘邦攻击项羽 对象之间的交互 l.att(x) l.att(x) l.att(x) x.att(l) #项羽 用攻击方法 将 刘邦对象 当做参数传进去,使刘邦对象 的属性发生变化; =====项羽攻击刘邦 对象之间的交互 x.att(l) x.att(l) x.att(l) 执行结果 刘邦杀项羽 300 人马 项羽 还剩 700 人马 ! 刘邦杀项羽 300 人马 项羽 还剩 400 人马 ! 刘邦杀项羽 300 人马 项羽 还剩 100 人马 ! 刘邦杀项羽 300 人马 项羽 还剩 -200 人马 ! 刘邦 把 项羽 砍死于 汗血宝马 之下! 项羽杀刘邦 300 人马 刘邦 还剩 700 人马 ! 项羽杀刘邦 300 人马 刘邦 还剩 400 人马 ! 项羽杀刘邦 300 人马 刘邦 还剩 100 人马 ! 项羽杀刘邦 300 人马 刘邦 还剩 -200 人马 ! 项羽 把 刘邦 砍死于 赤兔马 之下!