面向对象

1、面向对象与面向过程
面向过程:核心过程二字,过程即解决问题的步骤,就是先干什么后干什么
基于该思想写程序就好比在这是一条流水线,是一种机械式的思维方式
优点:复杂的过程流程化
缺点:扩展性差
 
面向对象:核心是对象二字,对象指特征与技能的结合体
基于该思想编写程序就好比在创造一个世界,世界是由一个个对象组成,是 一种‘上帝式’的思维方式
优点:可扩展性强
缺点:变成复杂度高,极容易出现过度设计的问题
 
 
2、类
对象是特征与技能的结合体,类就是一系列对象相似的特征与技能的结合体
在现实生活中:一定是先有一个个具体的对象,后总结出类
在程序中:一定是先定义类,后产生对象
 
 
#创建类的成员并访问
# class aaa:         #定义类
#     '''大雁类'''     #类文本字符串
#     def __init__(self,beak,wing,claw):  #构造方法
#         print('我是大雁类!')
#         print(beak)
#         print(wing)
#         print(claw)          #输出特征
#     def fly(self,state = "i can fly"):
#         print(state)
# beak_1="嘴的基部较高,长度和头部的长度几乎相等"
# wing_1="翅膀长而尖"
# claw_1="爪子是什么什么的"   #特征
# bbb = aaa(beak_1,wing_1,claw_1)  #创造大雁类的实例
# bbb.fly()
# bbb.fly("我飞行的时候,一会排成个人字,一会排成个一字")
 
#创建数据成员并访问
# class Geese:
#     '''雁类'''
#     neck = "脖子较长"
#     wing = "振翅膀频率高"
#     leg = "腿位于身体的中心支点,行走自如"   #类属性
#     number = 0    #编号
#     def __init__(self):
#         Geese.number +=1
#         print("\n我是第" + str(Geese.number) +"只大雁,我属于雁类!我有以下特征:")
#         print(Geese.neck)
#         print(Geese.wing)
#         print(Geese.leg)   #输出特征
# #创建4个雁类的对象(相当与有5只大雁)
# l = []
# for i in range(5): #循环5次
#     l.append(Geese()) #创建一个雁类实例
# print("一共有"+str(Geese.number)+"只大雁")
 
# #实例属性
# class Geese:
#       '''雁类'''
#     def __init__(self):#实例方法(相当于构造方法)
#         self.neck = "脖子较长"
#         self.wing = "振翅频率高"
#         self.leg = "腿位于身体的中心支点,行走自如"  #定义实例属性
#         print("我属于雁类! 我有以下特征:")
#         print(self.neck)
#         print(self.wing)
#         print(self.leg)  #输出特征
# geese = Geese()
 
#修改
# class Geese:
#     '''雁类'''
#     def __init__(self):
#         self.neck = "脖子加长"
#         print(self.neck)
# g1 = Geese()
# g2 = Geese()
# g1.neck = "脖子没有天鹅的长"   #修改实例的属性
# print('g1的neck属性:',g1.neck)
# print('g2的neck属性:',g2.neck)
 
#访问限制
# class Swan:
#     '''天鹅类'''
#     __neck_swan = '天鹅的脖子很长'  #定义私有属性
#     def __init__(self):
#         print('__init__():',Swan.__neck_swan)  #在实例方法中访问私有属性
# swan = Swan()   #创建Swan类的实例
# print('加入类名:',swan._Swan__neck_swan) #私有属性,可以通过”实例名._类名__xxx“方式访问
 
# class Swan:
#     '''天鹅类'''
#     __neck_swan = '天鹅的脖子很长'  #定义私有属性
#     def __init__(self):
#         print('__init__():',Swan.__neck_swan)  #在实例方法中访问私有属性
# swan = Swan()   #创建Swan类的实例
# print('直接访问:',Swan.__neck_swan)  #私有属性不能通过实例名访问
 
posted @ 2018-12-10 15:23  aclover  阅读(240)  评论(0编辑  收藏  举报