201611-03 面向对象设计的 10 条戒律 不,这不是上帝说的。这也不是JonSkeet/MartinFowler/JeffAtwood/JoelSpolsky(可以用你最喜欢的技术专家的替换这些名字)说的。我们正在审查一些代码,并开始讨论为什么我们走捷径,不遵循常识原则。虽然每个人在对待关于类应该如何基于功能上下文来构建的问题上都有自己的智慧,但仍然有一些基本原则值得我们在设计类的时候牢牢记住。I.遵循单一职责原则每个类都应该有一个并且只有一个引起它变化的原因。这不仅... 继续阅读 >
201512-14 我是怎样教媳妇面向对象编程的 简介我老婆Farhana想要继续软件开发生涯(之前因为我们的第一个孩子出生,她不得不放弃)。我已经有了一些软件设计和开发的经验,所以这几天我就在试着帮助她学习OOD。由于我早年在软件开发的经验,我总是发现无论一个技术问题看上去多么难搞,只要从现实生活的角度去解释或用对话的方式去讨论总能让它变得更简单。关于OOD,我们已经有了许多成果丰硕的讨论,我觉得有人可能发现这是一个学习OOD有趣的方式,所以我... 继续阅读 >
201506-17 面向对象:说说程序员不解风情的瞬间 1.化完妆问他:“我漂不漂亮?”他说:“亲爱的,闭眼别动。”我羞涩地闭上眼等待他的kiss,结果他说:“这里有个脏东西。”然后撕下了我的双眼皮贴。。2.感冒了很难受,我闷在被窝里给男朋友发短信”我感冒了”并决定如果对方回答”多喝点水”就一脚踹了他。过一会儿手机振动起来,短信内容:”开门。”......这个大笨蛋!谁让他来的啦!我起身用最快的速度... 继续阅读 >
201502-13 PHP扩展小试牛刀系列之数据库扩展mysqli详细使用教程 mysqli提供了面向对象和面向过程两种方式来与数据库交互,分别看一下这两种方式。1、面向对象在面向对象的方式中,mysqli被封装成一个类,它的构造方法如下:__construct([string$host[,string$username[,string$passwd[,string$dbname[,int$port[,string$socket]]]]]])在上述语法中涉及到的参数说明如下。host:连接的服务器地址。username:连接数据库的用户名,默认值是服务器进程所有者的用户... 继续阅读 >
201411-11 三大UML建模工具Visio、Rational Rose、PowerDesign的区别 ROSE是直接从UML发展而诞生的设计工具,它的出现就是为了对UML建模的支持,ROSE一开始没有对数据库端建模的支持,但是在现在的版本中已经加入数据库建模的功能。ROSE主要是在开发过程中的各种语义、模块、对象以及流程,状态等描述比较好,主要体现在能够从各个方面和角度来分析和设计,使软件的开发蓝图更清晰,内部结构更加明朗(但是它的结构仅仅对那些对掌握UML的开发人员,也就是说对客户了解系统的功能和流程等并不一定很有... 继续阅读 >
201411-11 戏说编程语言之漫画——为什么 C 被踢出窗外? Java、C++、C、Python四个人一起在会议室……Java问其他三位:“如何让女生对我们更感兴趣?”C++说:“要不多搞些异常?”Python说:“要不改进我们的方法?”C蛋蛋地说:“你们能不能别把她们当对象看了?”结果……Java说什么了?见下方“Justusegirlfriend.getLaid()” //这也是漫画原标题 继续阅读 >
201411-07 PHP基础之类和对象1——简介及基本概念 一、简介自PHP5起完全重写了对象模型以得到更佳性能和更多特性。这是自PHP4以来的最大变化。PHP5具有完整的对象模型。PHP5中的新特性包括访问控制,抽象类和 final 类与方法,附加的魔术方法,接口,对象复制和类型约束。PHP对待对象的方式与引用和句柄相同,即每个变量都持有对象的引用,而不是整个对象的拷贝。二、基本概念1.class每个类的定义都以关键字 class 开头,后面跟着类名,后面跟着一对花括号,... 继续阅读 >
201411-07 PHP基础之类和对象2——类的属性 类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。属性声明是由关键字 public,protected 或者 private 开头,然后跟一个普通的变量声明来组成。属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指PHP脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。Note:为了向后兼容PHP4,PHP5声明属性依然可以直接使用关键字 var 来替代(或者附加于)public... 继续阅读 >
201411-07 PHP基础之类和对象3——类常量 可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用$符号。常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。接口(interface)中也可以定义常量。自PHP5.3.0起,可以用一个变量来动态调用类。但该变量值不能为关键字(如 self,parent 或 static)。Example#1定义和使用一个类常量classMyClass{constconstant=1;functionshowConstant(){echo... 继续阅读 >
201411-07 PHP基础之类和对象4——自动加载对象 很多开发者写面向对象的应用程序时对每个类的定义建立一个PHP源文件。一个很大的烦恼是不得不在每个脚本开头写一个长长的包含文件列表(每个类一个文件)。在PHP5中,不再需要这样了。可以定义一个 __autoload() 函数,它会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在PHP出错失败前有了最后一个机会加载所需的类。Tipspl_autoload_register() 提供了一种更加灵活的方式来实现类的自动加载。因此... 继续阅读 >
201411-07 PHP基础之类和对象5——构造函数和析构函数 构造函数 ¶void__construct ([ mixed$args [, $... ]])PHP5允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。Note:如果子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用parent::__construct()。如果子类没有定义构造函数则会如同一个普通的类方法一样从父类... 继续阅读 >
201411-07 PHP基础之类和对象6——访问控制:public/protected/private 对属性或方法的访问控制,是通过在前面添加关键字public(公有),protected(受保护)或private(私有)来实现的。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。一、属性的访问控制类属性必须定义为公有,受保护,私有之一。如果用 var 定义,则被视为公有。Example#1属性声明classMyClass{public$p... 继续阅读 >
201411-07 PHP基础之类和对象7——对象继承 继承已为大家所熟知的一个程序设计特性,PHP的对象模型也使用了继承。继承将会影响到类与类,对象与对象之间的关系。比如,当扩展一个类,子类就会继承父类所有公有的和受保护的方法。除非子类覆盖了父类的方法,被继承的方法都会保留其原有功能。继承对于功能的设计和抽象是非常有用的,而且对于类似的对象增加新功能就无须重新再写这些公用的功能。Note:除非使用了自动加载,否则一个类必须在使用之前被定义。如果一个类扩... 继续阅读 >
201411-07 PHP基础之类和对象8——范围解析操作符(::) 范围解析操作符(也可称作PaamayimNekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。当在类定义之外引用到这些项目时,要使用类名。自PHP5.3.0起,可以通过变量来引用类,该变量的值不能是关键字(如 self,parent 和 static)。把PaamayimNekudotayim选作双冒号操作符的名字似乎有些奇怪。然而,这是Zend开发小组在写ZendEngine0.5(被用于PHP3中)... 继续阅读 >
201411-07 PHP基础之类和对象9——static关键字 本页说明了用static关键字来定义静态方法和属性。static也可用于定义静态变量以及后期静态绑定。声明类属性或方法为静态,就可以不实例化类而直接访问。静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。为了兼容PHP4,如果没有指定访问控制,属性和方法默认为公有。由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。静态属性不可以由对象通过->操作符来访问。用静态方式调... 继续阅读 >
201411-07 PHP基础之类和对象10——抽象类 PHP5支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受... 继续阅读 >