12
返回列表 发新帖
楼主: tzhsuccess

面向对象编程

[复制链接]
论坛徽章:
66
ERP板块每日发贴之星
日期:2005-08-18 01:01:39生肖徽章2007版:兔
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:蛇
日期:2008-04-07 19:42:14体育版块博采纪念徽章
日期:2008-07-03 19:47:13CTO参与奖
日期:2009-02-20 09:44:20生肖徽章2007版:狗
日期:2009-09-07 16:03:53ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522013年新春福章
日期:2013-02-25 14:51:24生肖徽章:鸡
日期:2006-09-07 17:09:37
11#
 楼主| 发表于 2006-7-6 19:18 | 只看该作者
(41)所有的抽象类都应当是基类。
  
  (42)所有的基类都应当是抽象类。
  
  (43)把数据、行为和/或接口的共性尽可能地放到继承层次体系的高端。
  
  (44)如果两个或更多个类共享公共数据(但没有公共行为),那么应当把公共数据放在一个类中,每个共享这个数据的类都包含这个类。
  
  (45)如果两个或更多个类有共同的数据和行为(就是方法),那么这些类的每一个都应当从一个表示了这些数据和方法的公共基类继承。
  
  (46)如果两个或更多个类共享公共接口(指的是消息,而不是方法),那么只有他们需要被多态地使用时,他们才应当从一个公共基类继承。
  
  (47)对对象类型的显示的分情况分析一般是错误的。在大多数这样的情况下,设计者应当使用多态。
  
  (48)对属性值的显示的分情况分析常常是错误的。类应当解耦合成一个继承层次结构,每个属性值都被变换成一个派生类。

使用道具 举报

回复
论坛徽章:
66
ERP板块每日发贴之星
日期:2005-08-18 01:01:39生肖徽章2007版:兔
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:蛇
日期:2008-04-07 19:42:14体育版块博采纪念徽章
日期:2008-07-03 19:47:13CTO参与奖
日期:2009-02-20 09:44:20生肖徽章2007版:狗
日期:2009-09-07 16:03:53ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522013年新春福章
日期:2013-02-25 14:51:24生肖徽章:鸡
日期:2006-09-07 17:09:37
12#
 楼主| 发表于 2006-7-6 19:18 | 只看该作者
 (49)不要通过继承关系来为类的动态语义建模。试图用静态语义关系来为动态语义建模会导致在运行时切换类型。
  
  (50)不要把类的对象变成派生类。对任何只有一个实例的派生类都要多加小心。
  
  (51)如果你觉得需要在运行时刻创建新的类,那么退后一步以认清你要创建的是对象。现在,把这些对象概括成一个类。
  
  (52)在派生类中用空方法(也就是什么也不做的方法)来覆写基类中的方法应当是非法的。
  
  (53)不要把可选包含同对继承的需要相混淆。把可选包含建模成继承会带来泛滥成灾的类。
  
  (54)在创建继承层次时,试着创建可复用的框架,而不是可复用的组件。
  
  (55)如果你在设计中使用了多重继承,先假设你犯了错误。如果没犯错误,你需要设法证明。
  
  (56)只要在面向对象设计中用到了继承,问自己两个问题:(1)派生类是否是它继承的那个东西的一个特殊类型?(2)基类是不是派生类的一部分?
  
  (57)如果你在一个面向对象设计中发现了多重继承关系,确保没有哪个基类实际上是另一个基类的派生类。
  
  (58)在面向对象设计中如果你需要在包含关系和关联关系间作出选择,请选择包含关系。
  
  (59)不要把全局数据或全局函数用于类的对象的薄记工作。应当使用类变量或类方法。
  
  (60)面向对象设计者不应当让物理设计准则来破坏他们的逻辑设计。但是,在对逻辑设计作出决策的过程中我们经常用到物理设计准则。
  
  (61)不要绕开公共接口去修改对象的状态。

使用道具 举报

回复
论坛徽章:
66
ERP板块每日发贴之星
日期:2005-08-18 01:01:39生肖徽章2007版:兔
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:蛇
日期:2008-04-07 19:42:14体育版块博采纪念徽章
日期:2008-07-03 19:47:13CTO参与奖
日期:2009-02-20 09:44:20生肖徽章2007版:狗
日期:2009-09-07 16:03:53ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522013年新春福章
日期:2013-02-25 14:51:24生肖徽章:鸡
日期:2006-09-07 17:09:37
13#
 楼主| 发表于 2006-7-6 19:19 | 只看该作者
java学习——理解面向对象程序设计

1.编程模型
  
  所有计算机均由两种元素组成:代码和数据.精确的说,有些程序是围绕着"什么正在发生"而编写,有些则是围绕"谁正在受影响"而编写的.
  
  第一种编程方式叫做"面向过程的模型",按这种模型编写的程序以一系列的线性步骤(代码)为特征,可被理解为作用于数据的代码.如 C 等过程化语言.
  
  第二种编程方式叫做"面向对象的模型",按这种模型编写的程序围绕着程序的数据(对象)和针对该对象而严格定义的接口来组织程序,它的特点是数据控制代码的访问.通过把控制权转移到数据上,面向对象的模型在组织方式上有:抽象,封装,继承和多态的好处.
  
  2.抽象
  
  面向对象程序设计的基本要素是抽象,程序员通过抽象来管理复杂性.
  
  管理抽象的有效方法是使用层次式的分类特性,这种方法允许用户根据物理含义分解一个复杂的系统,把它划分成更容易管理的块.例如,一个计算机系统是一个独立的对象.而在计算机系统内部由几个子系统组成:显示器,键盘,硬盘驱动器,DVD-ROM,软盘,音响等,这些子系统每个又由专门的部件组成.关键是需要使用层次抽象来管理计算机系统(或其他任何复杂系统)的复杂性.
  
  面向对象程序设计的本质:这些抽象的对象可以被看作具体的实体,这些实体对用来告诉我们作什么的消息进行响应.
  
  /* (我的理解)
  
  *计算机是一个实体,我要输入字符,显示器显示出来,那么
  
  *计算机(对象).输入(键盘属性).显示(显示方法)
  
  *使用分层来引用,操作.而不用管计算机内部如何处理.
  
  *只要有计算机对象,它就能响应我的操作,而我敲键盘,
  
  *计算机对象就把这个消息传给屏幕,屏幕显示.
  
  */
  
  计算机对象包含了它所有的属性,以及操作,这就是面向对象程序设计的三大原则之一:封装.
  
  3.封装
  
  封装是一种把代码和代码所操作的数据捆绑在一起,使这两者不受外界干扰和误用的机制.封装可被理解为一种用做保护的包装器,以防止代码和数据被包装器外部所定义的其他代码任意访问.对包装器内部代码与数据的访问通过一个明确定义的接口来控制.封装代码的好处是每个人都知道怎样访问代码,进而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用.
  
  在JAVA中,最基本的封装单元是类,一个类定义着将由一组对象所共享的行为(数据和代码).一个类的每个对象均包含它所定义的结构与行为,这些对象就好象是一个模子铸造出来的.所以对象也叫做类的实例.
  
  在定义一个类时,需要指定构成该类的代码与数据.特别是,类所定义的对象叫做成员变量或实例变量.操作数据的代码叫做成员方法.方法定义怎样使用成员变量,这意味着类的行为和接口要由操作实例数据的方法来定义.
  
  由于类的用途是封装复杂性,所以类的内部有隐藏实现复杂性的机制.所以JAVA中提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西.私有的方法数据只能通过该类的成员代码来访问.这就可以确保不会发生不希望的事情.
  
  4.继承
  
  继承是指一个对象从另一个对象中获得属性的过程.是面向对象程序设计的三大原则之二,它支持按层次分类的概念.例如,波斯猫是猫的一种,猫又是哺乳动物的一种,哺乳动物又是动物的一种.如果不使用层次的概念,每个对象需要明确定义各自的全部特征.通过层次分类方式,一个对象只需要在它的类中定义是它成为唯一的 各个属性,然后从父类中继承它的通用属性.因此,正是由于继承机制,才使得一个对象可以成为一个通用类的一个特定实例.一个深度继承的子类将继承它在类层次中的每个祖先的所有属性.
  
  继承与封装可以互相作用.如果一个给定的类封装了某些属性,它的任何子类将会含有同样得属性,另加各个子类所有得属性.这是面向对象程序在复杂性上呈线性而非几何增长的一个重要概念.新的子类继承其所有祖先的所有属性.子类和系统中的其他代码不会产生无法预料的交互作用.
  
  5.多态
  
  多态是指一个方法只能有一个名称,但可以有许多形态,也就是程序中可以定义多个同名的方法,用"一个接口,多个方法"来描述.可以通过方法的参数和类型引用.
  
  6.封装,继承,多态的组合使用
  
  在由封装,继承,多态所组成的环境中,程序员可以编写出比面向过程模型更健壮,更具扩展性的程序.经过仔细设计的类层次结构是重用代码的基础.封装能让程序员不必修改公有接口的代码即可实现程序的移植.多态能使程序员开发出简洁,易懂,易修改的代码.例如:汽车
  
  从继承的角度看,驾驶员都依靠继承性来驾驶不同类型(子类)的汽车,无论这辆车是轿车还是卡车,是奔驰牌还是菲亚特牌,驾驶员都能找到方向盘,手刹,换档器.经过一段时间驾驶后,都能知道手动档与自动档之间的差别,因为他们实际上都知道这两者的共同超类:传动装置.
  
  从封装的角度看,驾驶员总是看到封装好的特性.刹车隐藏了许多复杂性,其外观如此简单,用脚就能操作它.发动机,手刹,轮胎大小的实现对与刹车类的定义没有影响.
  
  从多态的角度看,刹车系统有正锁反锁之分,驾驶员只用脚踩刹车停车,同样的接口可以用来控制若干种不同的实现(正锁或反锁).
  
  这样各个独立的构件才被转换为汽车这个对象的.同样,通过使用面向对象的设计原则,程序员可以把一个复杂程序的各个构件组合在一起,形成一个一致,健壮,可维护的程序

使用道具 举报

回复
论坛徽章:
4
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB元老
日期:2009-05-27 11:36:49
14#
发表于 2006-7-7 01:06 | 只看该作者
基础知识是最重要地
up

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2006-06-30 13:00:02ITPUB元老
日期:2008-05-16 22:29:10
15#
发表于 2006-7-7 19:34 | 只看该作者
基础知识才是最重要滴!

使用道具 举报

回复
招聘 : 技术支持/维护
论坛徽章:
84
参与SAP云计算之旅活动纪念
日期:2011-05-17 13:35:45马上有车
日期:2014-02-18 16:41:11马上有对象
日期:2014-04-08 13:12:46马上加薪
日期:2014-08-08 10:49:37马上有钱
日期:2014-10-14 15:40:35马上有房
日期:2014-12-17 10:18:37暖羊羊
日期:2015-03-04 14:50:372015年新春福章
日期:2015-03-06 11:57:31沸羊羊
日期:2015-05-20 10:47:47托尼托尼·乔巴
日期:2017-08-17 10:17:47
16#
发表于 2006-7-8 10:47 | 只看该作者
學習。。。

使用道具 举报

回复
论坛徽章:
66
ERP板块每日发贴之星
日期:2005-08-18 01:01:39生肖徽章2007版:兔
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:蛇
日期:2008-04-07 19:42:14体育版块博采纪念徽章
日期:2008-07-03 19:47:13CTO参与奖
日期:2009-02-20 09:44:20生肖徽章2007版:狗
日期:2009-09-07 16:03:53ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522013年新春福章
日期:2013-02-25 14:51:24生肖徽章:鸡
日期:2006-09-07 17:09:37
17#
 楼主| 发表于 2006-7-22 23:42 | 只看该作者
最初由 yueshily82 发布
[B]基础知识才是最重要滴! [/B]

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表