posts - 26,  comments - 154,  trackbacks - 1
  2009年6月30日

代码写的比较粗糙 各位看官凑合着看看

两层循环搞定 代码写的不算面向对象 用了class但用在数据结构上了

话说我真是老了 一个非递归搜索写了一个小时

Code
posted @ 2009-06-30 13:28 winter-cn 阅读(1839) | 评论 (13)编辑
  2009年5月16日
     摘要: 一般来说大家比较熟悉的面向对象方式是基于类的面向对象,声明一个类,然后在根据类声明的描述去创建对象,通过类与类之间的继承和组合关系来复用代码。而JS的设计采用了一种完全不同的思路。  阅读全文
posted @ 2009-05-16 17:33 winter-cn 阅读(1295) | 评论 (4)编辑
  2009年4月30日
     摘要: 看了两篇文章 今天碰到一道比较有趣的面试题,大家来探讨一下。 有感于--"今天碰到一道比较有趣的面试题,大家来探讨一下。" 以及各位的评论,实在忍不住凑个热闹。 这道"有趣"的面试题是:甲乙两地相距100公里,有一辆火车以每小时15公里的速度离开甲地直奔乙地,另一辆火车以每小时20公里的速度从乙地开往甲地。如果有一只鸟,以30公里每小时的速度和两辆火车同时启动,从甲地出发,碰到另一辆车后返回,依次在两辆火车来回飞行,直到两辆火车相遇,请问,这只小鸟往返了多少次?   阅读全文
posted @ 2009-04-30 00:58 winter-cn 阅读(1925) | 评论 (29)编辑
  2009年4月15日
     摘要: 最近跟一些朋友讨论关于工厂模式的一些东西,觉得很有必要写篇东西把抽象工厂的应用方法写清楚。GoF在抽象工厂一章中没有花很多篇幅在如何应用抽象工厂上,希望本文理解抽象工厂能起到一点作用,能让网络上少一些诸如"工厂用来重构switch的言论",若能对各位实际开发有点启发,则非常荣幸。  阅读全文
posted @ 2009-04-15 21:12 winter-cn 阅读(1412) | 评论 (26)编辑
  2009年2月14日
     摘要: 相信大家比较熟悉使用Silverlight的User Control,在VS2008的Silverlight插件中,可以通过添加新项(Add new Item)创建一个User Control,而且Silverlight在网页中嵌入的本身就是一个User Control。 本文中讲的是如何开发Customized Control,Customized Control是与User Control完全不同的,Customized Control是继承或者间接继承System.Windows.Controls.Control的,而User Control必须继承System.Windows.Controls.Control.UserControl。Customized Control更接近于Silverlight本身提供的Button、CheckBox等Control, User Control则比较类似这些原生Control的组合体。 我希望本文能让更多朋友理解Silverlight,从应用开发层面深入到库开发和组件开发。  阅读全文
posted @ 2009-02-14 04:00 winter-cn 阅读(1483) | 评论 (5)编辑
  2008年12月14日
     摘要: 相信所有ASP.NET程序员对GridView都不陌生,但是FormView就很少有人用了,这里就向一些初学.NET的朋友介绍一下FormView的一些小技巧,值得特别指出的是,这些技巧都不适合大中型网站(很适合应付一些XXX系统之类的作业......)。如果你想三层结构、ORM、AJAX什么的,可以直接忽略本文。直白地说,偷懒专用。  阅读全文
posted @ 2008-12-14 22:30 winter-cn 阅读(710) | 评论 (4)编辑
  2008年12月3日
     摘要: 缓动可能一直是web开发中比较令人头疼的东西,其中最困难的就是缓动公式的选取,一般大家会喜欢用三角函数,但是三角函数没有参数可以控制曲线形状,所以我做了这个工具,自动生成三次函数缓动公式。  阅读全文
posted @ 2008-12-03 10:37 winter-cn 阅读(2096) | 评论 (23)编辑
  2008年11月18日

如果你要把一只猫卖给一个计算机专家,千万不要说它有多聪明多可爱,而要说,这是一只面向对象的猫。这是程序员对程序员的揶揄。

面向对象渗透到软件的各个领域,既然找不到银弹,这颗铜子弹成了我们对抗人狼的最佳武器。

在这样的世界里,你有没有想过,什么是面向对象呢?

如果你习惯性地说:继承、封装和多态,那么请你继续读完这篇随笔吧,它会带你认识一个真实的OO

 

我想提及面向对象之前,应该先搞明白什么是对象。《面向对象分析与设计》(Grandy Booch)中提到,对象是一个朴素的概念,约一岁以后,人会培养出一种对象概念的能力。从人类的认知角度来说,对象应是以下之一

  • 可触摸或可见的东西
  • 可被理性理解的东西
  • 可进行想像或施加动作的东西

在英文中Object是一个应用广泛的词,它的出现早于程序语言出现之前,我想用中文中一个最适合的词来翻译,应该是"东西"而非"对象",当然有点太口语化了。Grandy Booch接下来还提到,现实生活中的对象不是软件开发中唯一感兴趣的对象,另一些重要的对象是设计过程的产物。最后的总结是:对象具有状态、行为、和标识。

对象具有状态、行为、和标识这三点是非常重要的,这是面向对象大师Grandy Booch对朴素对象概念的非常精确的概括。

《面向对象编程导论》(Ian Graham)中对面向对象有这样描述:一些作者已经强调了面向对象程序设计和面向数值程序设计的区别。MacLenna(1982)指出,值(例如数字17)是应用式的和只读的,他们总是抽象的。对象(例如实例)在一定范围内存在,可以被创造、撤销、共享和更新。数值是引用透明的,引用它的一切事情将使用同样的数值。

从这一段我们可以看出,与"对象"相对的并非"过程",而是"值"。值和对象最显著的区别正是Booch总结的3点,状态、行为、和标识。举一个例子,3是一个值,苹果是一个对象。苹果具有状态,它可能已经烂了,或者还没熟;苹果也有行为,它可以被削皮,可以被咬一口,也可以变烂;标识保证了,苹果是唯一的,你无法在世界上找到任何一个其它苹果,使得它跟这个苹果是“同一个苹果”。而对值来说并非如此,3就是3,是没有状态的;3也是不可改变的,你只能由3得到一个新的值4,却没法把任何一个3变成4;值是不需要标识的,世上所有3都是相同的,没有任何区别。

在这种朴素地认识下,我想可以分析一下C++对象模型的设计:用内存中连续的一段存储一个对象的状态,这样可以将它们的地址作为标识,将对象分类并将他们的行为以成员函数的形式体现

(未完待续)

 

 

posted @ 2008-11-18 00:31 winter-cn 阅读(243) | 评论 (5)编辑
  2008年8月23日
     摘要: 函数递归调用是很常见的做法,但是它往往是低效的,本文探讨优化递归效率的几个思路。包括尾递归优化、动态规划算法和备忘录、展开递归函数以及组合数学方法解递归。这里只是一个简单的介绍,每种方法背后都有大量的内容。  阅读全文
posted @ 2008-08-23 01:34 winter-cn 阅读(2398) | 评论 (16)编辑