话说三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连成一片,眼看就要灭掉东吴,统一天下,曹操大悦,于是晏众文武,在酒席间,曹操诗兴大发,不觉吟道:“喝酒唱歌,人生真爽”,众文武其呼:“丞相好诗!”于是一臣子速命印刷工匠刻版印刷,以便流传天下。样本出来给曹操一看,曹操感觉不妥,说道:“喝与唱,此话过俗,应改为‘对酒当歌’较好!”,于是此臣就命工匠重新来过,工匠眼看连夜刻版之工,彻底白费,心中郁闷,只得照办。样本再次出来请曹操过目,曹操细细一品,觉得还是不好,说:“人生真爽太过直接,应改问语才够意境,因此应改为‘对酒当歌,人生几何?’”当臣转告工匠之时,工匠吐血身亡!可惜三国时期活字印刷术还未发明,所以类似事情是有发生,如果有了活字印刷,则只需更改个别字即可,实在妙哉。

所以说,四大发明之活字印刷是面向对象的胜利,世界上的万事万物都是有联系的,活字印刷是如何和我们的面向对象进行完美结合的呢?第一,要改,只需更改要改之字,此为可维护;第二,这些字并非用完这次就无用,完全可以在后来的印刷中重复使用,此乃可复用;第三,此诗若要加字,只需另刻字加入即可,这是可扩展;第四,字的排版其实有可能是竖排也有可能是横排,此时只需将活字移动就可做到满足排列需求,此为灵活性。但是在活字印刷术之前,上面的四种特性都无法满足,要修改,必须重刻,要加字,必须重刻,要重新排列,必须重刻,印完这本书后,此版已无任何可在利用的价值。

由上述故事,想到在敲学生管理系统和机房收费系统的时候,为实现某个功能的时候,我们的直觉是用计算机能够理解的逻辑来描述和表达待解决的问题及具体的求解过程,这个其实是用计算机的方式去思考问题,比如说机房收费系统中,上机这个小功能,逻辑思维如下所示:

根据我们的逻辑思维进行相应判断,得到我们想要实现的上机这个小功能,这个过程本身没有错,但是这样的思维却使得我们的程序只为满足当前的需求,缺少灵魂,这样的软件做出来是不规范的,不易维护的,不易扩展的,以及不易复用的。那么面向对象到底是什么?有着怎样神奇的面孔,接下来,我们翻开崭新的一页:

面向对象的知识,前面的博文中有相关介绍,再此不在一一赘述,总的来说面向对象的主要优点以及与面向过程有着那些不一样的地方,如下:

面向对象程序设计中有两个重要概念,Class和Object,以及OMT和面向对象的三个基本特征,具体介绍如下:

对面向对象有了一些基本的掌握,以及类和对象的把控,我们来深入了解C#中的类,类是一种自定义的数据类型,就像整型和字符型,可以使用类来声明变量,用类声明的变量称之为引用变量,所以,类是引用型数据类型,C#提供了创建了类和对象的功能,用C#编程时,要做的主要工作就是定义组成程序各种类,类定义可以作为一个模板或蓝图,封装了她的对象的数据和行为,一旦类定义好了,就可以以她作为模板来创建类的对象和实例,那么,接下来,我们以C#视频中的一个例子-修改密码来看一下,类的创建和实例,首先,我们需要做的是声明一个能判断密码是否正确,并且能够更改密码的类,并在类中定义相关方法:

 class Authentic   //声明一个判定密码是否正确,并能够更改密码的类
       {  

        private string PassWord = "dengyigegushi";                  //在类中定义密码  

        public bool IsPasswordCorrect(string userPassword)      //在类中声明判断密码是否正确的方法
        {
            return (PassWord == userPassword) ? true : false;
        }
        public bool ChangePassWord(string oldPassWord, string newPassWord)//在类中声明更改密码的方法
        {
            if (oldPassWord == PassWord)
            {
                PassWord = newPassWord;
                return true;
            }
            else
                return false;
           }

将类实例化

 class Program
    {
        static void Main(string[] args)
        {
            Authentic simon = new Authentic(); //simon是authentic实例化得到的名字
              bool done;
            done = simon.ChangePassWord("dengyigegushi", "dangxingfulaiqiaomen");
            if (done == true)
                Console.WriteLine("密码已更改");
            else
                Console.WriteLine("密码更改失败!");
        }
   }

我们再来举个小例子,具体详细讲述类的创建:

[<访问说明符>] [<修饰符>] class <classname>

{

//body of class

}

其中class是C#创建类所使用的关键字;<classname>是类的名称;<body of class>是类的成员,主要包括属性和方法!C#之旅,未完待续......

C#之面向对象的更多相关文章

  1. angular2系列教程(六)两种pipe:函数式编程与面向对象编程

    今天,我们要讲的是angualr2的pipe这个知识点. 例子

  2. 一起学 Java(二)面向对象

    一.方法函数 函数也称为方法,就是定义在类中的具有特定功能的一段独立代码.用于定义功能,提高代码的复用性. 函数的特点1> 定义函数可以将功能代码进行封装,便于对该功能进行复用:2> 函数 ...

  3. js面向对象学习 - 对象概念及创建对象

    原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...

  4. 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型

    前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的 ...

  5. .NET 基础 一步步 一幕幕[面向对象之对象和类]

    对象和类 本篇正式进入面向对象的知识点简述: 何为对象,佛曰:一花一世界,一木一浮生,一草一天堂,一叶一如来,一砂一极乐,一方一净土,一笑一尘缘,一念一清静.可见"万物皆对象". ...

  6. 简单分析JavaScript中的面向对象

    初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...

  7. Java程序员应该了解的10个面向对象设计原则

    面向对象设计原则: 是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorat ...

  8. JavaScript学习笔记(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  9. 带你一分钟理解闭包--js面向对象编程

    上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...

  10. .NET基础拾遗(2)面向对象的实现和异常的处理基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

随机推荐

  1. Android开发艺术探索第五章——理解RemoteViews

    Android开发艺术探索第五章--理解RemoteViews 这门课的重心在于RemoteViews,RemoteViews可以理解为一种远程的View,其实他和远程的Service是一样的,Rem ...

  2. Winform DevExpress控件库(三) 使用NavBarControl控件定制导航栏

    NavBarControl控件:主要作用是制作包含多个选项组并且每个组里包含多个子选项的导航栏: 位于 工具箱 -> Navigation & Layout(导航栏与布局类控件) 目录下 ...

  3. Swift基础之UIPickerView和小animate的使用

    写一个简单的UIPickerView的使用Demo,比较简单,其中和一个小动画的结合使用 UIPickerView的使用基本上跟OC语言中的一样,就是写法的样式问题,想必开发过OC的应该不需要多讲了, ...

  4. Oracle 11g客户端及PLSQL Developer配置|Instant Client Setup-64位|OraClientLite11g_x86

    转载自:http://blog.csdn.net/xiaoyw71/article/details/45311589 Oracle 11g客户端 资源 下载资源,直接解压进行配置 Oracle官方资源 ...

  5. springMVC源码分析--DispatcherServlet请求获取及处理

    在之前的博客springMVC源码分析--容器初始化(二)DispatcherServlet中我们介绍过DispatcherServlet,是在容器初始化过程中出现的,我们之前也说过Dispatche ...

  6. 【NPR】非真实感渲染实验室

    写在前面 前几天在知乎看到一个问题--关于非实感图形学或者风格化渲染有哪些好的书或者paper,我刚好接触过一些就去里面回答了一下.答完以后突然想在Unity里搞一个这样的集锦,把一些简单的NPR论文 ...

  7. iOS编程Cookbook第19章最后一个例子不能正常工作的解决办法

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在Cookbook的第19章的11节中所要解决的是在App中显 ...

  8. 关于Lt分发系统的时序图分析

    我们已经知道,系统共分为两个模块,mather与son 同时系统允许的操作也有三种,向mather提交war包,我某个服务器更新代码,为所有服务器更新代码 我们一个一个来看 先说,向mather提交w ...

  9. 6. React 表单使用介绍

            表单是前端页面中非常重要也是非常常用的一个内容,react 也在表单方面进行了很多封装,让开发者可以方便快捷地在 react 组件中使用表单.下面介绍如何在组件中正确的使用表单,从而可 ...

  10. struts extjs 3.3.1 读取JSON文件

    json文件和脚本代码: jsonSrc/jsonTxt1.json, { "personInfoList": [ { "id": 0, "name& ...