zoukankan      html  css  js  c++  java
  • .Net调试技巧

    部门内部培训的PPT,版权属于我同事(这里不公布姓名)了,已征的本人同意。

    http://www.cnblogs.com/breezeli/archive/2011/06/14/2081003.html

    面向对象编程--听高翔“面向对象与生活”有感

         应老赵的要求放个链接,第三届nBazaar大会正在报名http://nbazaar.org/

          面向对象编程是什么?无疑面向对象编程首先是编程,然后编程前面有定语“面向对象”。我很不客气的在前面加一个“你”,你面向对象编程。

             为什么把这么个话题又拿出来又说呢!主要是我觉得这个话题虽然说了又说但是很多人还是不明白,所以很有必要拿出来再说一说,当然这并不是说我比别人解释的更清楚,只是想拿出我的体会来分享给大家。

             那谁能先说说面向对象编程,肯定无数人都会鄙视我 ,谁不能说说啊!所谓面向对象编程就是以对象作为思考方式,现实世界中每一个事物都是对象,以对现实世界事物的思考方式解决程序问题就是面向对象编程了, 这个无数书上都给过定义了,大家都知道。那其实我想说的是背是背过了,但是背过和明白是两回事。

             前面说我斗胆在面向对象前面加了个你,你面向对象编程,现在什么情况,“你”有了,你编程了,你面向XX编程了,但是这个XX是不是“对象”呢?恐怕不一 定。可能说你也有表示对象的类,你也把项目根据分工做了不同的分层,每层了区分了无数的类。难道这还不是面向对象编程吗?

             那咱们说说“对象”,什么是对象?很多类似的例子,现在有只鸡,鸡有性别:公鸡、母鸡;鸡有花色:白色的、花的;鸡可以叫。然后有只鸽子,鸽子也有花色, 鸽子也可以叫。鸡、鸽子就是对象了,从上面看鸡和鸽子所具备的东西分为两种,第一类就是属性了,性别、花色;第二类就是动作了,叫。鸡和鸽子又同属鸟类。 这些就体现了面向对象的三个基本特征,封装、继承、多态。具体哪部分体现了什么我就不过多的解释了。

    到这里肯定很多兄弟不服气了,你这说了半天我也没看出点新鲜的来啊,说来说去还是这么点东西。举个例子还是真么烂,还鸡怎么不说鸭子啊!

             应该说单纯说面向对象的话,大家都能做的很好,写出的例子比我精彩百倍。实际项目中不单纯说为了面向对象而面向对象了,为了处理业务而面向对象。大家回想 一下自己的代码面向对象了吗?你的Model类应该说是就是业务逻辑中的对象,实际代码中Model类是对象吗?对象是有属性和动作来组成的,实际上 Model类里面基本上就是属性吧,有该对象所具备的动作吗?我的Model没有什么动作,为什么没有动作呢?

             大家现在恐怕基本都用着ORM呢,那就说说ORM,拿到需求后大家最早定下来的是什么,有多少人最先定下来的是表结构,然后用代码生成器生成一下,实体 层、数据层、业务层全有了,只要页面上写些调用,业务类里填上自己的方法逻辑,一切ok了,这样做的不在少数吧。那你说在你这是面向对象编程吗?是啊,你 看我所有东西都封装了,我操作的也都是实体类。我说你不是,你只不过是把过程化的程序切成了几节,搞成好像面向对象的样子,你操作的是实体类是应为ORM 提供给你了实体的操作方式,你可以很省事的用上罢了。

    ORM是什么?Object RelationalMapping,大家都看见了O在最前面object,ORM是为了解决什么问题,将对象持久化到数据库中。请注意,将“对象”持久化到“数据库”中,不是讲“数据库”映射成“对象”。

             可能说你没有用ORM,那没有关系,基本来说只要你是首先确定的表结构然后一切围绕表来设计的,那就基本为你的程序定下了主基调。当然不排除业务处理中小范围的包含面向对象的方式和特征。

             现在发现了没有?本末倒置了,先有类然后在考虑持久化问题,而不是先定下来表结构然后再考虑怎么搞成类。从需求中找名词做类,找动词做方法,这我就不详细说了,很多书上都有大篇幅来说明这种设计方法。

             这同样也解释了很多新人的问题,都说面向对象编程可以应对变化,可是一旦变化了为啥我的程序还是要挨个改个遍,为啥c#中这么多语言的特性我都用不到,什 么委托、事件对我来说都是浮云啊。因为你还没有面向对象编程,你只是用了面向的语言写了过程话的程序。为啥设计模式我看了觉得也很棒,很好很强大但是我就 是用不上呢?因为设计模式是“可复用面向对象软件的基础”你还没有面向对象的。

             顺便再说说分层,分层是为了什么?借用《企业应用架构模式》上的一句话“你可以将复杂的领域逻辑从界面代码中抽取出来,单独放到中间层,用对象加以建模和组织”我觉得大家应该好好体会体会。

    本文不算原创,元旦假期听了高翔老师的“面向对象与生活”讲座后,觉得讲的非常好,希望大家都能听听。本文把其中一些内容结合自己的体会描述给大家。下载地址:

    盛大创新院赞助第二届.NET技术交流会 - 演讲录像及下载

    View more presentations from breezeli
  • 相关阅读:
    Azure 虚拟机安全加固整理
    AzureARM 使用 powershell 扩容系统磁盘大小
    Azure Linux 云主机使用Root超级用户登录
    Open edX 配置 O365 SMTP
    powershell 根据错误GUID查寻错误详情
    azure 创建redhat镜像帮助
    Azure Powershell blob中指定的vhd创建虚拟机
    Azure Powershell 获取可用镜像 PublisherName,Offer,Skus,Version
    Power BI 连接到 Azure 账单,自动生成报表,可刷新
    Azure powershell 获取 vmSize 可用列表的命令
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2082322.html
Copyright © 2011-2022 走看看