C#教学第21讲类(学习笔记)

第21讲类

  视频讲师:陈广老师

    大家好,从今天开始我们将用一个比较长的篇幅去介绍C#中一个重要的概念 类(class)。我们先来看一下类的定义:

    类是面向对象程序设计的核心部分,在逻辑上它是一些相依的功能(或称方法)和数据的组合体。

    说到类,我们不得不谈一下面向对象,面向对象(Object Oriented),在程序设计中这是一个非常重要的概念,如今很多人去应聘程序员的时候都会被问到一个问题,“谈谈你对面向对象的理解”,要阐述这个问题可以从很多个角度很多的方法来阐述。在这里我提供一个角度或者说一个方法,就是可以从OO(Object Oriented的缩写)的特点来入手,面向对象最主要的几个特点就是继承,封装,多态

    继承简而言之就是复用,使我们写的代码可以重复使用。

    封装就是隐藏细节。我们不必去关心一个类或者组件它是如何实现其功能的,我们就只要知道怎么样去使用它就行了,拿过来用就好比银行的取款机,我们去取钱,取款机上就那么几个按钮,我们只要按照它的提示进行操作就能把钱取出来了,至于说这个钱是怎么取出来的它实现了多少复杂的操作,这个不是我们所要关心的问题。封装,隐藏了实现的细节。

    多态,是指不同类型的对象可以对相同的几率做出适当的不同的响应能力,多态丰富了对象的内容,扩大了对象的适应性,改变了对象单一继承的关系。好比说,马会跑步袋鼠也会跑步鸵鸟呢也会跑步,它们都有跑步这个动作,但是它们跑步完全不同,马是四条腿在跑,袋鼠是两条腿在跑而且是在跳,而鸵鸟也是两条腿在跑,它跟袋鼠有很大的不同,这个就是多态。对于同一个动作,它所呈现的是多种不同的形态。

    这里只对OO的特点做了一个简单的介绍。当然,如果是面试的时候是这样回答,那这份工作就可能要丢了。大家可以多看看书,或者别人的教学视频,做一个总结以备将来面试时候的使用。

    下面我们来谈一下,为什么要使用面向对象的编程方法?我们知道工业的生产是从手工作坊式的小规模生产演化到现在的大规模的现代化的机器生产,编程也一样,它也是朝着这个方向进行演化,最早的编程是使用的面向过程的编程方法,当然一直到现在很多人还是在使用面向过程的方法,只是它是基于面向对象的开发工具之上。当然这里不是说面向过程就一定不好,面向对象和面向过程有它各自的优缺点,也有它们不同的适用范围。当年求伯君单枪匹马开发wps,他成为了中国程序员第一人,在那个时代,也被封为英雄,但是随着IT业的飞速发展,新技术的层出不穷,现在一个人去开发这样一个系统根本就是不可能的事。让我们来看微软的最新操作系统Vista(当时是最新的,现在是windows 7),参与Vista系统开发的核心工程师就9000名,历时5年,代码超过5千万行。我们可以想象得到,个人的力量在这里面会显得多么的渺小。

    这里我们用汽车的生产来做个比喻。汽车有成千上万个零件组成,里面小到螺钉大到发动机。里面大部分的零件都是采购而来,或者承包给别的专业厂商进行加工,汽车制造厂商只会加工部分的核心部件,最后会把所有的这些部件包括采购而来的放到生产线上装配,最后汽车就生产出来了。我们可以想象一下,如果汽车生产厂商连轮胎,螺钉甚至于玻璃都要自己生产,那他要建多少的厂房,耗费多少的人力物力,而且这也是不可能办得到的。汽车产业之所以能够成为一个国家的工业的标志,就是因为它可以带动很多相关产业的发展。面向对象编程方法的出现,极大的提高了生产力,降低了编写的难度,并使得程序员之间分工合作变得更加简单。

    面向对象给程序员带来的好处,在Visual Studio可视化编程界面里得到了淋漓尽致的体现。比如说工具栏里有很多的控件,每个控件它的本质上都是一个类,我们不必关心它是怎么写出来的,而只是需要了解它的这些属性,甚至说只需要了解几个属性就行了,并通过更改这些属性以达到我们不同的要求。这些控件就好比一个个的汽车零件,我们只需要把这些汽车零件进行适当的组合,在生产线上进行装配就可以得出我们的程序,当然代码的逻辑部分还是需要我们自己去写。

    但是,正是由于这种开发方式的转变,使得我们可以更加专注于程序逻辑的编写。从而大大地提高了生产力。面向对象编程方法的出现使得分工协作成为可能,我们拿数据库的多层开发来举例。三层结构,四层结构甚至五层结构它的本质其实就是以面向对象的方法进行数据库应用程序的开发。我们来看一下这张图:

 21

    第一层是数据展示层,也就是我们所说的界面或者说前台。使用分层开发以后,进行数据展示层开发的程序员他不必知道怎么去写SQL语句,怎么样去访问数据库等,这不是他需要关心的。编写这一块的程序员更加关心的是如何把界面做的更漂亮,让用户使用更顺手。有一些人可能做美工做地很漂亮,这时候他就适合在这一层,而另为一些人可能程序写的很棒,但是他的美工不是很好,做出来的东西不是很漂亮,这个时候他就适合在中间层或者数据库层工作。

    中间层又叫业务逻辑层,在这里实现了业务逻辑,当然数据库的访问也是在这一层实现的。

    最后一层是数据层,有些人可能很少写程序,但是他对数据库非常地了解。能设计出非常好的数据库,存储过程也写的非常棒,这时候他就可以专注于数据库的开发,而不用去理会代码是如何写出来的。

    社会需要分工,程序员也是一样,要求一个人经常精通里面所有的东西那是根本不可能的,在分工协作这一点上,印度就就做的比较好,在我们国家的一些中小型公司,老板都喜欢的是十项全能的程序员,甚至于有的时候从分析到编码到数据库的设计到界面都是由一个人来完成,人的精力是有限的,样样精通就意味着一样都不精通。所以我们应该是对每个技术都有所了解,然后精通其中的一门。

    正是由于面向对象技术的不断的发展,使得我们可以只专注于一门技术而不必去样样精通,好,扯远了(-_-!)。我们接着继续往下讲。

    类和对象

    什么是类?什么是对象?类可以描述为对现实事物的一个抽象,或者说它是一个在我们脑子里面的一个定义。打个比方,说到人我们马上可以联想到两个手两个脚,然后有鼻子有眼睛这个就是人。这些特征就是在我们脑子里形成的对人的抽象。比如说2米24的姚明跟一个1米的小孩站在一起,你会马上联想到这两个都是人,你不可能认为那个小孩是猴子。虽然说姚明和那个小孩的身高相差非常远,但是他们都符合你脑袋里面所定义的那个人的形象,所以你会认为他们都是人。所以类其实是一种类型的定义,而什么是对象的呢?对象就是实实在在的东西,比如说姚明站在那里,他就是一个对象,他实实在在的存在,小孩也是一样,他也是一个对象,他实实在在的存在于那里。

    好,我们来写一段代码来理解:

 

     代码中Person就是类,baby和YaoMin他们都是对象,baby是一个对象,YaoMin是另外一个对象,他们都是Person类的对象。对象也叫做类的实例,也就是说一个类被new了以后也就是实例化以后它就成为了对象。Person类中的name和height叫做成员变量,eat叫做成员方法或者说是类的方法,类的定义使用class关键字,当然可以在前面加上修饰符。修饰符我们会在后面的课程中专门用一章来讲,类的实例化使用代码中Person baby = new Person(); 这种格式,首先是类名,然后是对象名,接着就是new一个Person加上2个括号就可以行了,当然,有的时候在类名的括号里面会有一些参数,这个我们后面再讲。在C#中,类可以包括许多中不同的成员,它可以是变量,方法,属性,常数,索引器,事件和运算符。C#是一个完全面向对象的编程语言,甚至于它的Main函数也就是入口函数也必须声明在一个类里面,在这面向对象的支持上C#无疑是最强大的。

    这节课我们对面向对象和类进行了一个概述,好,先讲到这里。

由快乐乔巴听课摘写笔记  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
c#从入门到精通第四版的pptC#微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。 C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。 [1] C#是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。 C#使得C++程序员可以高效的开发程序,且因可调用由 C/C++ 编写的本机原生函数,因此绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉似语言的开发者可以很快的转向C#。 [2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值