游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

Python其实很简单第十三章通俗说说面向对象

  最早的程序设计方法是面向过程的程序设计,这里的过程,其实就是流程。世间有万事,万事各不同,所谓不同,就是流程不同。既然你的程序是针对某个具体的问题,处理的方法和流程当然不同,这样说来,你所精心设计的程序,往往只能解决具体问题,而不具备普遍性和可变性。
  面向对象程序设计(ObjectOrientedProgramming,OOP),它是一种程序设计思想,其本质是通过抽象方法建立模型,再将模型具体化的方法。
  举一个例子。汽车是一个非常宽泛的概念,大大小小,不同颜色,形态各异的汽车,都属于汽车这个类,颜色、轮胎数量、车门个数等属性都是汽车类的属性,启动、前进、加速、倒车、刹车等都是汽车类的动作(这里的动作被称为方法),这些属性和方法既可以指定为具体值,也可以仅仅列出而不赋值。我们也可以定义汽车类的一个子类,譬如红色小轿车,而一辆具体的车,假如车号为88888的汽车是红色小轿车类的一个实例,该汽车便是一个对象,该对象除了已经继承了红色小轿车类的颜色属性,其他的属性和方法还是继承了父类汽车的属性和方法。
  综上,面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。
  面向对象程序设计具有三大基本特征:封装、继承和多态。
  下面简要的介绍一下上述提到的名词:
  1、对象(Object)
  这是一个抽象的概念,世间万物皆对象,任何事情和物品都可以用对象来描述。譬如说,在设计学生信息处理程序时,可以将王小明同学看成一个研究对象,他有静态属性和动态属性。静态属性有姓名、性别、出生年月(静态属性一般简称为属性)等,动态属性有动作、行为(动态属性一般被称为方法)等。
  2、类(class)
  一个共享相同结构和行为的对象的集合。类(Class)定义了一类事物(对象)的抽象特点。通常来说,类定义了每个对象共有的属性和方法。举例来说,学生这个类会包含了所有学生的一切基础特征,例如籍贯、性别、专业和预约考试、查询成绩。王小明同学就是学生类的一个实例,是学生类的具体化,当然也就继承了学生类的全部属性和方法,如他一定有籍贯、性别、专业三个属性和预约考试、查询成绩两个方法。
  3、封装(encapsulation)
  封装就是对用户隐藏实现细节。如我们使用手机通话时,关心的是通话的内容,而不需要了解无线电波是如何传播的。此时的手机就是一个黑盒子,我们无须知道其工作原理。
  面向对象程序设计中的封装,有两层含义:其一是将数据和操作捆绑在一起,创造出一个新的类型的过程;其二是将接口与实现分离的过程。
  采用封装思想可以保证类内部数据结构的完整性,使用该类时,用户看不到类中的数据结构,只能通过设计者提供的方法来访问即可,从而提高了程序的可维护性。
  4、继承
  在日常生活中,继承这个概念适合于长辈与晚辈之间。对于类,也可以分为父类和子类。对象可以继承它从属的类的属性和方法,子类也可以继承父类的属性和方法,
  5、多态
  有一句俗语说一龙生九子,九子各不同。虽然各个子类都继承了父类,但继承的都是共有的属性和方法,而各个子类都有属于自身特有的属性和方法,比如不同专业的学生的课程会不同。
  下面举一个例子说明消息传递方面的的多态:比如教师和学生都是用户,都是通过鼠标点击同一个按钮(譬如查看成绩),但进入的界面就不一样,教师看到的是全班所有学生的成绩,而学生看到的只有本人成绩。
  6、消息传递
  指的是一个对象调用了另一个对象的方法(或者称为成员函数)。
  7、方法
  也称为成员函数,是指对象上的操作,作为类声明的一部分来定义。方法定义了可以对一个对象执行那些操作。
  下面重点介绍类的概念及其应用
  1、定义类
  具有相同的属性和方法的对象所构成的集合就是类。
  语法:
  classClassName:
  statement
  其中,ClassName是类名,一般使用大写字母开头,如果类名中包括两个单词,应当采用驼峰式命名法,即每个单词的首字母大写,其余字母小写。statement表示类体,包含类变量(或类成员)、方法和属性等定义语句,如果没有类体可以描述,就用pass语句代替。如:classStudent:
  pass
  这个空的类,你可以将其想象为一个占位符,虽然它没有实质性的意义,但在以后的编程过程中你可以根据需求去扩充它,让它饱满。
  下面举例说明一个完整的类的语法结构,如:
  classStudent:
  definit(self,name,tel):
  self。namename
  self。teltel
  defprinttel(self):
  print(s:s(self。name,self。tel))
  这里定义了一个类,类名为Student。init()是一个特殊方法(是两个连续的号),类似于Java中的构造方法,每当创建一个类的实例,Python就会自动执行它。其中必须包含参数self,它指向类本身,在实例化时则指向实例本身。上面的Student类的init()方法还有两个参数name和tel,实例化时将被具体的实例变量所代替。printtel()方法访问的类本身的数据,在实例化时也是调用了实例变量。
  2、类实例化
  类的实例化相当于将类具体化,赋予一组具体的值。和函数调用相似,但又比函数调用复杂。因为类既包含数据,又包含操作数据的方法。
  如:
  tomStudent(Tom,8888888)
  jimStudent(Jim,7777777)
  tom。printtel()
  jim。printtel()
  运行结果:
  Tom:8888888
  Jim:7777777
  可以看出,创建实例是通过类名和()实现的,实例参数要和类属性对应,如’Tom’和类属性name对应,‘8888888’和类属性tel对应。
  tom是Student类的一个实例,它也就能调用类的方法,如tom。printtel()。如在上面的例子中,添加下面的语句:
  tom。nameBaumlR。W
  tom。printtel()
  运行结果:
  Tom:8888888
  Jim:7777777
  BaumlR。W:8888888
  可见,语句tom。nameBaumlR。W使实例tom的属性name的值发生了改变。
  3、私有属性与私有方法
  类可以有公有属性与公有方法,也可以有私有属性与私有方法,公有部分的对象可以从外部访问,而私有部分的对象只有在类的内部才可访问。定义私有属性(或方法)时要在的属性名(或方法名)的前面加上两个连续的号。
  现在通过下例介绍私有属性与私有方法的用法:
  classPubAndPri:
  pub10此为公有属性
  pri20此为私有属性
  xPubAndPri()x为类PubAndPri的实例
  print(publicvar:,x。pub)通过实例名访问公有属性
  print(privatevar:,x。pri)通过实例名访问私有属性
  运行结果:
  publicvar:10
  Traceback(mostrecentcalllast):
  FileC:UsersAdministratorAppDataLocalProgramsPythonPython382。py,line11,in
  print(privatevar:,x。pri)
  AttributeError:PubAndPriobjecthasnoattributepri
  可见,通过实例名访问私有属性时就会报错。
  为了访问私有属性,只能在类中增加一访问私有属性的方法。将上例中的程序修改如下:
  classPubAndPri:
  pub10
  pri20
  definit(self):
  print(privatevar:,pri)在方法中访问私有属性
  xPubAndPri()
  print(publicvar:,x。pub)
  print(privatevar:,x。PubAndPripri)
  f访问私有属性,格式:实例名。类名私有属性名(第一个为一个,第二个为两个)
  运行结果:
  publicvar:10
  privatevar:20
  由上可以看出,私有属性可以通过实例名。类名私有属性名的方式访问,但在构造方法中要有相关的访问语句。
  4、继承与多态
  子类可以继承父类的所有公共成员。父类也称基类,子类也称派生类。声明父类的方法是在类名后面的括号中列出。若不声明父类,默认的父类是object。
  下面通过一个实例来介绍继承与多态:
  程序1:子类完全继承父类
  classPerson(object):定义了一个类Person
  definit(self,name,sex):类Person有两个属性name和sex
  self。namename
  self。sexsex
  defprintinfo(self):定义了Person类的方法
  ifself。sexmale:
  print(self。nameisman)
  elifself。sexfemale:
  print(self。nameiswoman)
  classChild(Person):定义了一个子类Child,父类为Person
  pass
  KingChild(King,male)创建子类Child的实例
  MaryPerson(Mary,female)创建父类Person的实例
  print(King。nameisKing。sex,,Mary。nameisMary。sex)
  King。printinfo()调用子类Child的printinfo方法
  Mary。printinfo()调用父类Person的printinfo方法
  运行结果:
  KingismaleMaryisfemale
  Kingisman
  Maryiswoman
  程序2:子类重写父类的方法
  classPerson(object):定义了一个类Person
  definit(self,name,sex):类Person有两个属性name和sex
  self。namename
  self。sexsex
  defprintinfo(self):定义了Person类的方法
  ifself。sexmale:
  print(self。nameisman)
  elifself。sexfemale:
  print(self。nameiswoman)
  classChild(Person):定义了一个子类Child,父类为Person
  defprintinfo(self):重写方法printinfo()
  ifself。sexmale:
  print(self。nameisboy)
  elifself。sexfemale:
  print(self。nameisgirl)
  KingChild(King,male)子类实例化
  MaryPerson(Mary,female)父类实例化
  print(King。nameisKing。sex,,Mary。nameisMary。sex)
  King。printinfo()
  Mary。printinfo()
  输出结果:
  KingismaleMaryisfemale
  Kingisboy
  Maryiswoman
  对比程序1和程序2的运行结果可知,程序1中的子类完全继承了父类的属性和方法,程序2中的子类在继承父类的属性和方法的基础上,又对父类的方法进行了重写,从而使子类并不和父类完全相同,这种情况被称为多态,比如程序2中的子类就有不同于父类中的方法printinfo(),子类的实例调用的是子类特有的方法,父类的实例调用的是父类的方法。
  程序3:子类中重写父类的构造方法
  classPerson(object):定义了一个类Person
  definit(self,name,sex):类Person有两个属性name和sex
  self。namename
  self。sexsex
  classChild(Person):定义了一个子类Child,父类为Person
  definit(self,name,sex,brother,sister):子类构造方法添加两个属性
  Person。init(self,name,sex)继承父类的构造方法
  self。brotherbrother添加属性
  self。sistersister添加属性
  KingChild(King,male,Tom,Jane)创建子类Child的实例
  MaryPerson(Mary,female)创建父类Person的实例
  print(King。name,:,King。sex,King。brother,King。sister)
  print(Mary。name,:,Mary。sex)
  输出结果:
  King:maleTomJane
  Mary:female
  如上,子类在继承父类属性的基础上,可以通过重写构造方法再建立独有的属性。

春课文教案设计优秀范例教学设想突出细美的特点。初进中学的学生在阅读和写作时常比较粗疏,课文中的细笔细绘可作为范例,给学生以启发。对文中的形象美、语言美、结构美、情味美,学生由于年龄小,不注意体……鹬蚌相争的教案设计一、第一自然段1、出示(这是一只河蚌)板:河蚌读(它张开壳儿在河滩上晒太阳)演:张壳出示:太阳问:被暖暖的太阳照着,河蚌会有怎样一番感觉呢?……苏教版第十册习作3教学反思第三篇大作文是学写新闻报道,这本来是学生比较感兴趣的一种练笔体裁,可是教材习作要求却限制必须写体育竞赛或学习竞赛的内容,这让我就不太明白了。如果马上组织竞赛,再来写这篇报道,就……地砖的周长教学设计范文教学目标:1、结合具体情境,探索并掌握正方形的周长的计算方法。2、能正确计算正方形的周长。能运用正方形的周长的计算方法解决实际生活中的简单问题。3、采用身边的……教学反思拼音教学认读拼音有助于学生掌握更多的生字,词语,拼音的教学是一年级语文教学中不可或缺的部分。学生在幼儿园中已经学习了拼音,本以为拼音的教学应该是很轻松的一件事,但在实践中却发现事实上不……出师表重点提要注释精选中道崩殂(帝王死),此诚(果真,实在)危急存亡之秋(时)也。开张圣听(扩大圣明的听闻),以光(发扬光大)先帝遗德,恢弘(扩大,发扬)志士之气,若有作奸犯科(科条法……课文雨点教案模板第一课时一、看图导入,揭示课题1、请小朋友看书上右上方的图,在一片片乌云的下面是什么?2、板书课题:雨点领读课题。3、继续看图,说说雨点落到什么地方,它……雾凇教案作为一位不辞辛劳的人民教师,通常需要用到教案来辅助教学,借助教案可以恰当地选择和运用教学方法,调动学生学习的积极性。那么优秀的教案是什么样的呢?下面是小编为大家收集的《雾凇》教……小班语言活动世界上最好听的声音活动名称:世界上最好听的声音。活动目标:1、能根据图片大胆猜测并讲述图中的小动物认为自己最动听的声音是什么。2、初步理解故事内容,了解每个人都有自己认为最好听……除法的含义及读写法教学反思范文本课时让学生在建立平均分概念的基础上学习除法,认识除号,了解除法等式的写法和读法,教学时,首先借助学生帮助熊猫京京平均分竹笋的活动,激起学生强烈的求知欲望,之后,介绍除法算式的……减少的近义词和反义词是什么关于减少的近义词大家知道哪些?今天就由小编为大家带来关于减少的近义词及其相关知识解析,希望能帮助到您,一起来看看吧!减少的近义词缩小:1。由大变小。缩小削减:……小班艺术活动设计帮小羊穿棉衣设计意图:冬天到了,天气冷了,人们都已经换上了厚厚的棉衣,为了让幼儿知道动物和人是一样的,冬天也需要保暖,因此,让幼儿进行了手工制作《帮小羊穿棉衣》。活动目标:……
刷子李教学设计优秀范文教学目标1认识6个生字。读读记记师傅、刷浆、包袱、透亮、清爽、搜索、威严、露馅、发怔、发傻、半信半疑等词语。2有感情地朗读课文,了解一位普通的手艺人高超的技艺。……万以内数的认识说课稿教学内容:今天我说课的内容是人教版小学数学第四册第五单元《万以内数的认识》中例4、例5有关5位数的认识。下面我就具体来说说本课教材的内容。一、说教材万以内数的……窃读记教学反思3篇《窃读记》是台湾女作家林海音的作品。下面是由小编为大家带来的关于《窃读记》教学反思,希望能够帮到您!《窃读记》教学反思一学了第一单元的课文,我被第一课《窃读记》中的一句话……鸟的天堂教案设计一、教学要求:1、认识大榕树的奇特和美丽,体会大榕树上众鸟纷飞的壮观景象,感受热爱大自然,热爱美的教育。2、学习课文写景静态和动态的方法。3、学会本课生字新词……邹忌讽齐王纳谏教学设计方案范文教学目标1。认识除蔽纳谏在当时的积极作用和在今天的借鉴意义。2。了解《战国策》这部国别体史书的基本情况及其在中国文学和史学上的地位。3。理解和掌握文种重点文言……七年级上学期体育课队列练习教学反思队列练习在体育教学中占有重要的意义,对于七年级的学生来说尤其重要,他对学生的习惯养成,组织、整齐、纪律性培养具有不可代替的作用,所以在七年级的授课中队列队形教学应引起我们足够的……刚交付就被55名车主联名维权极氪为何频繁翻车?如果在以前提起车主联合声明的字眼,相信大家都会第一时间想到惨遭黑天鹅事件的蔚来汽车。但就在前天,极氪001的数十名车主也被迫发起了联合声明,并且还做出了一张颇具设计感的车主发声……前滚翻成蹲撑和游戏障碍赛跑的教学反思范文本课教学,能根据水平二学段学生特点,合理安排教材,教会学生前滚翻成蹲撑的动作,并让学生体验到游戏《障碍赛跑》的竞争激情,感受到体育的快乐。在课的开始,师通过激趣导入,引导……叹息的解释及造句叹息拼音【注音】:tanxi叹息解释【意思】:书叹气。叹息造句1、他叹息一声说可以。2、有时候我哭泣而使您叹息,但您却知道,我是如此地爱您。……关于说勤奋教学设计昆山市某中心小学写在前面:这是一篇说理性的课文,在教学目标的确定上稍有不慎,就会错位,常常会把这类课文上成思想品德课,把教学重点放在明理、激情、导行上。根据语文新大……清平乐村居教学设计《清平乐村居》一课是南宋爱国词人辛弃疾写的一首描写农村生活的著名词作,作者通过对农村清新秀丽、朴素恬静的环境描写以及对翁媪及其三个儿子形象的刻画,抒发了作者对乡村田园生活的热爱……化学变化伴随的现象教学反思今天下午,在实验室和两个班的学生一起主要通过硫酸铜和铁钉的实验,研究化学变化伴随的现象,这个实验在教学中发现许多问题,并尝试了解决,但结果仍然不明显。第一个班级的教学:……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网