面向对象思想

来自CloudWiki
跳转至: 导航搜索

生活中的对象

什么是对象

  • 对象(Object)是现实世界中实际存在的某个具体实体,个人理解也可以称为物体(Object),它们在英语中都是等价的。一般对象是有形的,例如,电视机对象拥有着自己的样式、颜色、大小等等和放映、开关和设置等功能(行为);也可以是无形的,例如会议、班级、比赛等等。

Java3-4.png


什么是类别

  • 人类在认识客观世界时习惯于把众多的事物进行归纳、划分和分类,这就叫做类别。例如,家用轿车、公交车、货车等都属于汽车的范畴;安卓手机、苹果手机、老年机都属于手机的范畴。通过比较总结等抽象思维方式可以发现不同的车之间存在着共同特点,把具有相同特征及相同行为的一组对象称为一类对象(Class of Object)。

类别与对象的关系

  • 类表示一个有共同性质的对象群体,而对象指的是具体的实实在在的物体。类与对象的关系就如模具和铸件的关系,类是创建对象的模具,而对象则是由类这个模板制作出来的铸件;同时类又是由一组具有共同特性的对象抽象得到的。对象与类的关系如图3-2所示。
  • Java1-103.jpg

程序中的对象

类和对象包含两层含义:

1.类是对象的抽象和概括,如从普通用户A,B,C中抽象出一个用户类Person

2.对象是根据"类"这个模板创造的具体实现,如,用用户类Person 新创建一个用户 D

用类和对象描述世界

  • 世界由对象/事物组成,根据对象进行分类是认识世界的基本方式
  • 软件是对真实世界的模拟,所以也最好使用面向对象的方式
  • 而面向对象技术中的对象就是这些实际存在实体在程序实现中的映射和体现。
  • Java3-5.png

程序中的对象

  • 软件是现实生活的模拟,我们可以在软件中用对象描述我们所生活的这个世界。

Java3-102.jpg

  • 比方说,我们在图书管理系统中,为了描述系统中的图书,我们可以建立一个个的书籍类的对象,如“读者”、“红楼梦”,“青年文摘”等。为了描述系统中的用户,我们也可以建立一个个的用户类的对象,如“张三”,“李四”,“小强”等。

思考:商院面馆中有哪些对象?

 火鸡面,可乐,雪碧,

  炸酱面,刀削面,芬达

  炸串,卤蛋 油泼面 啤酒

  江小白 麻辣烫,辣白菜

程序中的类

但是,和现实中一样,程序中的对象数量庞杂,如果每个都单独开发、管理,工作量巨大,这时候我们想:能不能对这些对象进行分类管理 ?每一类的对象有共同的特征,这就是程序中的类。

面向对象技术中的类是同种对象的集合与抽象。为了能够方便的了解和描述这些实际存在的实体在面向对象技术中定义了类这个概念来类对所有对象提供统一的抽象描述,其内部包括属性和方法两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位。

Java3-101.gif

【经验】

  • 认识类与对象的关系是面向对象程序设计思想的第一步。类是由对象抽象出来的,对象是由类实例化得到的。定义类的最终目的是要使用这些类,而使用类的最主要方式就是创建并操作类创建出来的对象。

案例:商苑面馆

  • 面馆按产品分类,可以分为几类?
 面类,饮料类,小吃类
  • 每一类有什么具体的产品(对象)?
 面类的对象: 火鸡面,炸酱面,刀削面,油泼面
 饮料类对象: 可乐,雪碧,芬达,啤酒,江小白
 小吃类对象: 炸串,卤蛋,麻辣烫,辣白菜

类或对象的属性和行为

  • 某类对象一般拥有相似的特征和行为,特征指对象的外观、性质、属性等;行为指对象具有的功能、动作等。

如果我们要开发一个猫和老鼠的游戏,其中动物分别为猫以及老鼠,它们就有各自的属性和行为:

   猫类:属性(姓名,id),行为(吃,睡,奔跑,跳跃)
   老鼠类:属性(姓名,id),行为(吃,睡,叽叽喳喳)

再如 程序中书籍的对象往往包含它的名称、出版社、价格等信息,这就是它的特征,与书有关的动作,比如说获得该书的作者信息、获得该书的出版社信息,这就是它的行为;管理系统中的消费者对象往往包括他(她)的近期消费、分期付款等情况,这就是他(她)的行为。

  • 现实世界中类和对象的属性非常多,在编程时是否都要描述呢?答案是一般不用,选择描述哪些属性需要程序员根据程序需求来决定。比如,图书封面、图书内容简介要不要描述为Book类的属性?如果我们开发的是一个电子商务网站,希望顾客看到图书封面和简介,吸引顾客购买,那就需要这两个属性。那么图书的重量呢?电子书城一般不需要,但是物流系统或许需要该属性。