吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 2636|回复: 7

[C#] C#初级开发原创教程第十课 面向对象之类和对象

[复制链接]
王尼玛 发表于 2014-10-15 00:42 | 显示全部楼层 |阅读模式

本帖最后由 王尼玛 于 2014-10-24 01:15 编辑

大家好,我是王尼玛。今天起我给大家讲解C#开发教程,本次是第十课。大家在课后有什么疑问可以跟帖留言,我会尽我所能来解答。毕竟众口难调,大家有什么建议也可以跟帖告诉我。
此教程为本人原创,转载请注明"吾爱汇编论坛王尼玛原创"
好了,废话不多说,开始今天的学习.

有朋友说不太明白我写的教程,其实编程这东西很简单,一个字,练!你光看我写的多半是一头雾水,因为你没实际跟着我讲的代码去操作,你要跟着我的代码敲,多敲代码,多练习我给的例子,再配合我例子后面的讲解,自然就明白我讲的是什么了.还不明白?跟帖问吧

本章理论会比较多,但必须好好看!面向对象编程思想很重要!我手打教程也很辛苦,觉得不错就评分和回帖吧!

1.前言
C#是一个面向对象的高级语言,因此我们要学会用面向对象的思想考虑问题和编写程序.现实世界中客观存在的任何事物都可以被看作对象.它可以是有形的,比如一辆汽车,也可以是无形的,比如一项计划.因此对象无处不在
在面向对象中,对象是用来描述客观事物的一个实体.用面向对象方法解决问题时,首先要对现实世界中的对象进行分析和归类,找出哪些对象与我们要解决的问题是相关的,下面以商场中的两个对象为例,看看我们身边的对象,如下图,张浩在超市购物后要刷卡结账,收银员李明负责收款并打印账单.在这个问题中,张浩和李明就是我们所关心的对象.下面选择一个角度对它们分类,比如两人角色不同,张浩是顾客,而李明是收银员,因此可以说,张浩是"顾客对象",李明是"收银员"对象
IMG_0078.JPG IMG_0079.JPG

不同对象的静态特征和行为对照表
对象静态特征 静态特征的值 动态特征
"顾客对象" 姓名 张浩 买东西
张浩 年龄 20
体重 60kg
"收银员对象" 员工号10001 收款
李明 姓名 李明 打印账单
部门 财务部


2.对象的属性和方法
通过超市购物的例子可以看到,正是因为对象有了这些静态特征和动态特征才使得他们与众不同.在面向对象的编程思想中,我们把对象的的静态特征和动态特征分别称为对象的属性和方法,它们是构成对象的两个主要因素,比如上面的例子中,"顾客"对象有个属性是姓名.属性值是"张浩",顾客对象的动作有",买东西",这称为对象的方法.


3.封装
顾名思义,封装就是把一个事物包装起来,并尽可能隐藏内部细节,如下图
IMG_0080.JPG
这辆车未组装前,是一堆散零件,比如发动机,方向盘等,仅仅这些部件是不能发动的.当把这些部件组装完成后,才具有发动机的功能.显然,这辆法拉利是一个对象,而零部件就是该对象的属性,发动,加速,刹车是他的方法.


4.类
类定义了对象将会拥有的特征(属性)和行为(方法)
类的属性:对象所拥有的静态特征在类中表示时称为类的属性.例如,所有顾客都有姓名,因此姓名可以称为"顾客类"的属性,只是不同对象这一属性值不同,比如顾客张三和李四的姓名不同
类的方法:对象执行的操作称为类的方法.例如,所有顾客都有购物行为,因此购物就是"顾客类"的一个方法


5.类是对象的类型
到目前为止,我们已经学习了很多数据类型,比如整型(int),双精度浮点型(double),字符型(char)等.这些都是C#已经定义好的类型,我们编程时只需要用这些类型声明变量即可.
那么,如果想描述顾客"张浩",他的数据类型是什么呢?字符串还是字符型呢?其实都不是,"张浩"的类型就是顾客,也就是说,类就是对象的类型.

6.如何定义类

如何在vs2013里创建自定义类:
点击我传送
类定义了对象将会拥有的属性和方法
(1)语法:
  1. public class 类名{
  2.      //程序体
  3. }
复制代码
其中public为类的访问修饰符
C#有如下访问修饰符:
  1. 1.四个访问修饰符: 指定声明的类的可访问性。
  2. public: 公共访问是允许的最高访问级别,对访问没有限制;
  3. private:私有访问是允许的最低访问级别,私有类只有在声明它们的类和结构体中才是可访问的;
  4. internal:类型和类型成员的访问修饰符。 只有在同一程序集的文件中,内部类型或成员才是可访问的;
  5. protected:受保护类在其所声明的类中可由其所声明类的派生类实例访问

  6. 2. 其他类的修饰符:
  7. abstract:用于声明虚类,指示某个类只能是其他类的基类。
  8. partial: 部分在整个同一程序集中定义分部类、结构和方法。
  9. sealed:指定类不能被继承。
  10. static:声明静态类,类型本身只含有静态成员,不能被实例化。
复制代码
目前我们只接触public,这代表这个类可以被其他类访问到,因为他是public(公开)的
(2)编写类的属性
通过在类的主体中定义变量来描述类所具有的静态特征(属性),这些变量称为类的成员变量
(3)编写类的方法
通过在类中定义方法来描述类所具有的行为,这些方法称为类的成员方法


问题:
在不同的培训中心(北京中心,杭州中心),你会感觉到相同的教学环境和教学气氛,用类的思想输出培训中心的信息

分析:
对上面的问题,北京中心和杭州中心是特指名词,这样得到两个对象,不同的培训中心是泛指名词,可以抽象成类.对于每个中心,都具有"中心名称","教师数目"和"机房数目",他们所具有的行为都有"展示本中心的信息".通过上述分析,我们抽象出这个类的属性和行为(方法),如下图:
QQ图片20141014235215.jpg
解决方案:
  1. public class School
  2.     {
  3.         string schoolName;//中心名称
  4.         int classNumber;//教室数目
  5.         int labNumber;//机房数目
  6.         /// <summary>
  7.         /// 输出培训中心信息的方法
  8.         /// </summary>
  9.         public void showCenter()
  10.         {
  11.             Console.WriteLine(schoolName + "培训中心\n" + "配备:" + classNumber + "教" + labNumber + "机");
  12.         }
  13.     }
复制代码
在下一课,我们会详细讲解如何编写类的方法,这里做一个简单说明
语法:
  1. 访问修饰符 返回值类型 方法名(){
  2. 方法体
  3. }
复制代码
方法名命名规则:
  • 骆驼式命名法:方法或变量名的第一个单词首字母小写,后面每个单词的首字母大写,比如showCenter,userName 等
  • 帕斯卡命名法:每一个单词的首字母都大写.比如ShowCenter.UserName等
大家可以看情况选择合适的命名法



7.如何创建和定义对象
类school定义好了,下面就可以根据定义的模板创建对象了.由类生成对象,称为类的实例化过程,一个实例也就是一个对象,一个类可以生成多个对象


语法:
  1. 类名 对象名 = new 类名();
复制代码
在创建类的对象时,需要使用C#的new关键字,例如,创建一个School类的对象
  1. School center = new School();
复制代码
这里变量center的类型就是School类型.使用new创建对象时,我们并没有给他的数据成员赋一个特定的值.考虑到每个对象的属性值可能是不一样的,所以在创建对象后再给它的数据成员赋值
在C#中,要引用对象的属性和方法,需要使用"."操作符

语法:
  1. 对象名.属性    //引用对象的属性
  2. 对象名.方法名() //引用对象的方法
复制代码
例如:(实例化上面写到的School类)
  1. class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             School center = new School();
  6.             Console.WriteLine("****初始化成员变量前****");
  7.             center.showCenter();

  8.             center.schoolName = "北京中心";//给schoolName属性赋值
  9.             center.classNumber = 10;//给classNumber属性赋值
  10.             center.labNumber = 10;//给labNumber属性赋值
  11.             Console.WriteLine("****初始化成员变量后****");
  12.             center.showCenter();
  13.         }
  14.     }
复制代码
课件下载: 第十课.rar (31.9 KB, 下载次数: 6)
本节课就到这,这节课内容比较多,手打教程也很辛苦,希望大家多多回帖加分支持我!谢谢大家



王尼玛C#初级开发原创教程目录:
1.C#初级开发原创教程第一课  Visual Studio 2013的安装
2.C#初级开发原创教程第二课 控制台的输出
3.C#初级开发原创教程第三课 数据类型转换
4.C#初级开发原创教程第四课 深入控制台应用程序
5.C#初级开发原创教程第五课 bool类型,关系运算符与if选择结构
6.C#初级开发原创教程第六课 复杂选择结构
7.C#初级开发原创教程第七课  循环结构(一)
8.C#初级开发原创教程第八课 循环结构(二)
9.C#初级开发原创教程第九课 数组
10.C#初级开发原创教程第十课 面向对象之类和对象
11.C#初级开发原创教程十一课 类的无参方法
12.C#初级开发原创教程十二课 带参数的方法(一)
13.C#初级开发原创教程第十三课 字符串的操作






评分

参与人数 13HB +28 THX +8 收起 理由
29590 + 1
消逝的过去 + 1
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
agan8888 + 1
ldljlzw + 1
EMT + 1 + 1
ding520 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
playboy + 1
XiaoWeiSec + 1
创意合成 + 1 评分=感恩!简单却充满爱!感谢您的作品!
JIM + 5 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
njjwdy + 2 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
Shark恒 + 15 + 1 你将受到所有人的崇拜!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shark恒 发表于 2014-10-15 00:54 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
大官人 发表于 2014-10-30 23:46 | 显示全部楼层

艾玛  看不懂咋整
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
njjwdy 发表于 2015-5-24 20:58 | 显示全部楼层

从第一课开始看到这里,一直没有评论过!实在抱歉!非常感谢尼玛大神的无私奉献!希望继续更新,真心感觉教程写的非常不错!
希望继续更新!!!谢谢!!!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
njjwdy 发表于 2015-5-24 21:33 | 显示全部楼层

@Shark恒   这么好的教程为什么没有人回复和评分啊!希望论坛多出一些和王尼玛的大神!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
小范 发表于 2015-5-24 21:43 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
zf185 发表于 2016-6-15 14:30 | 显示全部楼层

今天起我给大家讲解C#开发教程,
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
af521 发表于 2022-11-21 15:44 | 显示全部楼层

感谢楼主分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表