摘要:
实作 :1. 建立Windows应用程序项目 2. 建立数据对象 *建立完毕,先建置方案一次。 3. 建立数据源 4. 建立报表 5. 系结报表数据源 *从右边数据源,拖曳数据字段至报表 6. 建立报表窗体 *选择报表后会自动建立TestDataBindingSource7. 建立报表数据 8. 捡视报表 阅读全文
摘要:
前言 :说到「面向对象程序设计」跟「结构化导向程序设计」两者之间的不同。常常会提到一点 :「面向对象程序设计程序代码比较容易重用」。 面向对象程序设计的前辈工程师,总结了很多经验写下了Design Patterns以及其他很多的数据文献。 让后续的工程师在重用程序代码的时候,有一些模式可以使用,而不用再去自己创造。 这大大增加了面向对象重用的机会,这类文章网络上已经有很多,这边就不赘述。 本篇从广义的抽象概念,来阐述面向对象的重用概念。说明 :「结构化导向程序设计」在重用的这个领域上,主要是使用「Library」来当作重用的方式。 「面向对象程序设计」在重用的这个领域上,除了沿用结构化导向程序 阅读全文
摘要:
昨天跟朋友哈拉打屁,引发了一些想法 :「程序设计有分深度跟广度」。 程序设计的深度,指的是技术背后的精神与实现。 程序设计的广度,指的是技术工具的使用与应用。当一个新技术发表,两个不同角度的人一起去看。 最终的结果都是能掌握,但在的路途上却是分歧的。 以ASP.NET MVC来说 : 从深度去看,看到的是。MVC的精神是甚么、微软怎么实现MVC架构。 从广度去看,看到的是。ASP.NET MVC有哪些方法可以用、在项目上怎么应用。这又延伸出了一个问题,一项技术该学到甚么程度。 从深度去看,学习掌握。深入了解核心精神、怎么实现的手法。就算懂了,剩下的实做时候再去翻数据。 从广度去看,学习掌握。深 阅读全文
摘要:
程序设计这件事本质上: 就是在无数工程师创造的世界规则上,建立属于自己的作品。 在CPU的世界上,建立汇编语言。 在HTTP通讯协议的世界上,建立网页程序。 在Microsoft的世界上,使用.NET开发程序。 ...就整个程序设计来说,有太多规则需要去学习体会。 不是每一条规则,都需要去透彻的了解才能写出程序。 掌握规则的程度高低,却是决定了功力高低的指标。 就像是开车的人不一定会修车、赛车手比一般人更会用车。随着程序设计的世界在进步,规则一层一层的架上去。 却有越来越多工程师,不去学习工具背后所隐藏的规则。 这不是一件坏事,这是高度抽象化的成果。 而且毕竟人的精力有限,开发出程序能收钱就好 阅读全文
摘要:
前言 :在面向对象的程序开发设计上,我们常常强调重用与抽换 : 重用核心的程序代码,抽换特定的模块。但是大多的面向对象的书,只有介绍重用与抽换的理论,并没有介绍实做的时候该怎么写。因为实际开发系统,要完成重用与抽换。牵扯到系统设计、动态加载、Config管理......等等方方面的知识。真的要解释起来,需要的篇幅会是很大一篇。本篇的文章跳过这些复杂的理论面,逐步解说如何实做微软提供的Provider Pattern来实现对象的抽换。Provider Pattern提供了,使用App.config或是web.config来做储存装置,并且实做了对象抽换的功能。依照本篇的模块去做面向对象开发设计的 阅读全文
摘要:
前言 :线程 在面向对象里是很少被讨论到的东西。 不是因为面向对象没有用到线程,而是因为线程是面向对象底层的程序设计的内容。 或者是换个角度说。线程是所有程序设计开发应该懂的内容,开发出来的程序都是在线程上面执行。 笔者试着从计算器物理层面,来解释线程的运作。单线程 :在[Object-oriented] 相关系列的文章中,已经阐述过, 程序的执行时其实是, 可以这样理解 :程序代码在内存内,然后由计算机一行一行去执行。 这一行一行执行串联起来的动作,其实就是所谓的线程。 也就是说图中红线的部分就是最简单的单线程。多线程 :多线程主要是用在有些时候很多工作要一起执行,而不是执行完一个在去执行下 阅读全文
摘要:
前言 :之前发布了一篇[ASP.NET] : HierarchicalObjectDataSource 本篇是它的Part2,内容没有新的东西。 只是把上一篇发表的对象,套用一些Design Patterns。 来达到异种数据的数据系结。一般写ASP.NET使用TreeView,大多使用XmlDataSource或是SiteMapDataSource做数据系结,不然就是依照数据去程序动态建立TreeNode。 HierarchicalObjectDataSource 封装了阶层式数据系结的复杂运算,让TreeView的数据系结开发变的可行。 依照这两篇HierarchicalObjectDat 阅读全文
摘要:
前言 :ASP.NET 3.5提供了,网页上常使用到的树状选单TreeView。 可是TreeView的数据系结,并没有支持ObjectDataSource。 这篇文章分享如何实做ObjectDataSource,来支持TreeView的数据系结功能。分析设计 :TreeView的DataSource只支持实做IHierarchicalDataSource接口的对象。 IHierarchicalDataSource这个看似简单的接口,里面却包含了很多子界面。 将整个IHierarchicalDataSource拆解开来,并且经过分析设计之后的对象图如下 :每个对象的职责就不赘述了,大多为符合I 阅读全文
摘要:
前言 :几乎所有的系统,都一定会有数据新增、修改、删除、查询的功能(CRUD)。 在ASP.NET里撰写CRUD有很多种的实作方式,例如使用GridView就可以简单实作完成。 这样的写作方式是把CRUD的职责,绑定在控件上。 当我们要做修改的时候,只能选择控件提供的方式,或是特殊方法才能满足客户的要求。本篇文章描述,撰写CRUD的一种模式。 将CRUD的职责拆解成一个一个的页面,单一页面只要负责单一的职责。 拆解完的CRUD职责不是绑在控件而是绑在页面上,能比较方便的做修改来满足客户要求。页面流程 :先从整个页面流程看起,下图为整个模式使用的页面流程图。 一共分为六个页面,其职责为 : -L 阅读全文
摘要:
前言 :写程序难免,会遇到要使用自定义函式来作对象数组转型。 写了一个对象来做这个动作,跟大家分享。说明 :这个对象的特点为: 1. 使用到才转型。不会在内存,建立整个转型后的数组副本。 2. 可在转型时加入参数。使用范例 :namespace CLK.Collections.ConsoleApplication{ public class User { public string LastName = string.Empty; public string FirstName = string.Empty; } public class D... 阅读全文
摘要:
前言 :接口 是在面向对象里,是个不难懂,却是很重要的东西。 笔者试着采用指标的方式,来解释接口的运作。接口 :底下是一段接口的程序代码 这个程序代码很简单,就是ClassA实作ISampleX而已public interface ISampleX{ void XXX(); void YYY();}public class ClassA : ISampleX{ public void XXX() { // ... } public void YYY() { // ... } public void ZZZ() ... 阅读全文
摘要:
前言 :继承 是面向对象初学者,学完之后。觉得懂却又有点模糊的东西 笔者试着用展开程序代码的方式,来解释继承的运作。继承 :底下是一段继承的程序代码 这个程序代码很简单,就是ClassB继承ClassA而已namespace ConsoleApplication1 { public class ClassA { public void XXX() { // ClassA Code } private void YYY() { // ClassA Code ... 阅读全文
摘要:
前言 :对象与类别 这两个是面向对象初学者,很容易混淆的东西。 笔者试着从计算器物理层面,来解释对象与类别的不同。说明 :不管是面向对象程序或是结构化程序, 执行程序的时候。 计算机作的事情是 : 把执行文件的档案加载到内存并且一行一行执行。 加载到内存的档案,这个我们姑且就叫他 : 「程序代码」面向对象程序程序代码的单位,是以类别为单位。 也就是说,面向对象程序代码加载到内存里面,我们可以把它看成一块一块的区段。 这个区段就是说我们常听到的「类别」。 可以想象成这样 : 程序代码加载到内存内之后, 计算机就会从Main(),开始一行一行执行程序代码。 当计算机执行程序到 Product X 阅读全文
摘要:
前言 :上篇发表之后 朋友们的反应,大多是说太抽象了,好像啥都没讲。 其实观念的东西真的就是抽象,本质真的就是简单两字而已。呵呵~说的有点多了, 这第二篇主要是补充一个实作的例子, 看会不会比较那么虚无飘渺噜。架构 :蓝色框框代表一个独立的DLL 特别标明出来是要传达, 数据存取层的接口定义是跟逻辑层绑在一起的 数据存取层的实作成是是相依于逻辑层内的数据存取层接口常常工程师在设计软件的时候 会写成 : 逻辑层==>数据存取层 建议的作法是 : 逻辑层(数据存取接口<=)=数据存取层 把相依的方向改变,这是面向对象设计中一个很重要的观念。范例 :namespace Clark.Exa 阅读全文
摘要:
前言 :一般说到应用程序架构 大家最容易联想的应该就是「三层式体系结构」 但笔者所要讨论的应用程序架构 抽象逻辑上是架构在三层式体系结构的上一层 针对软件设计所规划的应用程序架构 相关数据可以参考 : 微软文件「.NET 的应用程序架构:设计应用程序和服务」 本篇将焦点放在「数据存取层」简介 :所有的程序都离不开数据存取。 「数据存取层」所定义的就是将数据的存取,与应用程序的逻辑分开。动机 :开发应用程序有时会遇到变更数据库的需求, 例如将数据库从SQL换到Oracle。遇到这种问题 比较常碰到的解法是,把与SQL数据库沟通的程序代码跟SQL语句,改成Oracle。 甚至高深一点的会将SQL语 阅读全文