面向对象编程:类和对象的概念

  类(Class)    面向对象思想来源于对现实世界认知现实世界缤纷复杂、种类繁多难于认识和理解但是聪明人们学会了把这些错综复杂事物进行分类从而使世界变得井井有条比如我们由各式各样汽车抽象出汽车概念由形形色色猫抽象出猫概念由 5彩斑斓鲜花抽象出花概念等汽车、猫、鲜花都代表着类事物类事物都有特定状态比如汽车品牌、时速、马力、耗油量、座椅数小猫年龄、体重、毛色鲜花颜色、花瓣形状、花瓣数目都是在描述事物状态每类事物也都有行为比如汽车启动、行驶、加速、减速、刹车、停车猫捉老鼠鲜花盛开这些区别状态和行为将各类事物区分开来

  面向对象编程也采用了类概念把事物编写成个个“类”在类中用数据表示事物状态实现事物行为这样就使编程方式和人思维方式保持极大降低了思维难度

  封装(Encapsulation)    制造汽车过程中什么人最牛?当然不是焊钢板也不是装轮胎更不是拧螺丝而是设计汽车工程师他知道汽车运行原理但是我们开车时需要知道汽车运行原理吗?答案显然不需要汽车运行原理已经被伟大工程师封装在汽车内部提供给司机只是个简单使用接口司机操纵方向盘和各种按钮就可以灵活自如开动汽车了

   和制造汽车相似面向对象技术把事物状态和行为实现细节封装在类中形成个可以重复使用“零件”旦被设计好就可以像工业零件被成千上万对其内部原理毫不知情员使用设计者相当于汽车工程师使用者相当于司机这样员就可以充份利用他人已经编写好“零件”而将主要精力集中在自己专署领域

  接口(Interface)   今天你买了台等离子电视机你拿出遥控器操纵按钮开始欣赏精彩电视节目人们通过遥控器这个接口使用电视机同样人们通过类接口使用类员在编写类时精心地为它设计接口而设计良好接口不但方便其他员使用还有利于类升级改造

  假设你是个环保人士最近你用节能荧光灯代替了普通白炽灯白炽灯通过加热电阻丝照亮整个屋子;荧光灯则是激活空气中某些分子电子能而发光虽然它们原理区别但是它们功能却是——照明两种灯具有相同接口所以你只需拧下白炽灯然后再拧上荧光灯即可轻易实现“零件”更新换代同样在面向对象编程中只要保持接口不变你可以任意更改类实现细节个设计更好类替换原来实现类升级换代

  现在软件Software维护和修改成本已经占到了整个软件Software开发80%编成思想极大方便了维护和修改降低了软件Software成本

  对象(Object)   作为初学者比较容易混淆类和对象概念类是个抽象概念对象则是类具体例子比如人是个类司马迁、李白、杜甫都是对象;首都是个类则北京、伦敦、华盛顿、莫斯科都是对象;动画猫是个类则Kitty、Grafield和Doraemon都是对象

  

  类是抽象概念对象是真实个体我们可以说Kitty猫体重是1.5kg而不能说猫类体重是1.5kg;可以说刘翔在跨栏比赛中夺冠而不说人类在跨栏比赛中夺冠般情况下我们认为状态是描述具体对象而非描述类行为是由具体对象发出而非类发出

  现实生活中到处充实着对象栋房子、辆汽车头大象只蚂蚁乃至种语言、种思路方法都可以称为对象

Tags: 

延伸阅读

最新评论

发表评论