C#初级开发原创教程第十课 面向对象之类和对象
本帖最后由 王尼玛 于 2014-10-24 01:15 编辑大家好,我是王尼玛。今天起我给大家讲解C#开发教程,本次是第十课。大家在课后有什么疑问可以跟帖留言,我会尽我所能来解答。毕竟众口难调,大家有什么建议也可以跟帖告诉我。
此教程为本人原创,转载请注明"吾爱汇编论坛王尼玛原创"
好了,废话不多说,开始今天的学习.
有朋友说不太明白我写的教程,其实编程这东西很简单,一个字,练!你光看我写的多半是一头雾水,因为你没实际跟着我讲的代码去操作,你要跟着我的代码敲,多敲代码,多练习我给的例子,再配合我例子后面的讲解,自然就明白我讲的是什么了.还不明白?跟帖问吧
本章理论会比较多,但必须好好看!面向对象编程思想很重要!我手打教程也很辛苦,觉得不错就评分和回帖吧!
1.前言
C#是一个面向对象的高级语言,因此我们要学会用面向对象的思想考虑问题和编写程序.现实世界中客观存在的任何事物都可以被看作对象.它可以是有形的,比如一辆汽车,也可以是无形的,比如一项计划.因此对象无处不在
在面向对象中,对象是用来描述客观事物的一个实体.用面向对象方法解决问题时,首先要对现实世界中的对象进行分析和归类,找出哪些对象与我们要解决的问题是相关的,下面以商场中的两个对象为例,看看我们身边的对象,如下图,张浩在超市购物后要刷卡结账,收银员李明负责收款并打印账单.在这个问题中,张浩和李明就是我们所关心的对象.下面选择一个角度对它们分类,比如两人角色不同,张浩是顾客,而李明是收银员,因此可以说,张浩是"顾客对象",李明是"收银员"对象
不同对象的静态特征和行为对照表
对象静态特征 静态特征的值 动态特征
"顾客对象" 姓名 张浩 买东西
张浩 年龄 20
体重 60kg
"收银员对象" 员工号10001 收款
李明 姓名 李明 打印账单
部门 财务部
2.对象的属性和方法
通过超市购物的例子可以看到,正是因为对象有了这些静态特征和动态特征才使得他们与众不同.在面向对象的编程思想中,我们把对象的的静态特征和动态特征分别称为对象的属性和方法,它们是构成对象的两个主要因素,比如上面的例子中,"顾客"对象有个属性是姓名.属性值是"张浩",顾客对象的动作有",买东西",这称为对象的方法.
3.封装
顾名思义,封装就是把一个事物包装起来,并尽可能隐藏内部细节,如下图
这辆车未组装前,是一堆散零件,比如发动机,方向盘等,仅仅这些部件是不能发动的.当把这些部件组装完成后,才具有发动机的功能.显然,这辆法拉利是一个对象,而零部件就是该对象的属性,发动,加速,刹车是他的方法.
4.类
类定义了对象将会拥有的特征(属性)和行为(方法)
类的属性:对象所拥有的静态特征在类中表示时称为类的属性.例如,所有顾客都有姓名,因此姓名可以称为"顾客类"的属性,只是不同对象这一属性值不同,比如顾客张三和李四的姓名不同
类的方法:对象执行的操作称为类的方法.例如,所有顾客都有购物行为,因此购物就是"顾客类"的一个方法
5.类是对象的类型
到目前为止,我们已经学习了很多数据类型,比如整型(int),双精度浮点型(double),字符型(char)等.这些都是C#已经定义好的类型,我们编程时只需要用这些类型声明变量即可.
那么,如果想描述顾客"张浩",他的数据类型是什么呢?字符串还是字符型呢?其实都不是,"张浩"的类型就是顾客,也就是说,类就是对象的类型.
6.如何定义类
如何在vs2013里创建自定义类:点击我传送
类定义了对象将会拥有的属性和方法
(1)语法:
public class 类名{
//程序体
}其中public为类的访问修饰符
C#有如下访问修饰符:
1.四个访问修饰符: 指定声明的类的可访问性。
public: 公共访问是允许的最高访问级别,对访问没有限制;
private:私有访问是允许的最低访问级别,私有类只有在声明它们的类和结构体中才是可访问的;
internal:类型和类型成员的访问修饰符。 只有在同一程序集的文件中,内部类型或成员才是可访问的;
protected:受保护类在其所声明的类中可由其所声明类的派生类实例访问
2. 其他类的修饰符:
abstract:用于声明虚类,指示某个类只能是其他类的基类。
partial: 部分在整个同一程序集中定义分部类、结构和方法。
sealed:指定类不能被继承。
static:声明静态类,类型本身只含有静态成员,不能被实例化。目前我们只接触public,这代表这个类可以被其他类访问到,因为他是public(公开)的
(2)编写类的属性
通过在类的主体中定义变量来描述类所具有的静态特征(属性),这些变量称为类的成员变量
(3)编写类的方法
通过在类中定义方法来描述类所具有的行为,这些方法称为类的成员方法
问题:
在不同的培训中心(北京中心,杭州中心),你会感觉到相同的教学环境和教学气氛,用类的思想输出培训中心的信息
分析:
对上面的问题,北京中心和杭州中心是特指名词,这样得到两个对象,不同的培训中心是泛指名词,可以抽象成类.对于每个中心,都具有"中心名称","教师数目"和"机房数目",他们所具有的行为都有"展示本中心的信息".通过上述分析,我们抽象出这个类的属性和行为(方法),如下图:
解决方案:
public class School
{
string schoolName;//中心名称
int classNumber;//教室数目
int labNumber;//机房数目
/// <summary>
/// 输出培训中心信息的方法
/// </summary>
public void showCenter()
{
Console.WriteLine(schoolName + "培训中心\n" + "配备:" + classNumber + "教" + labNumber + "机");
}
}在下一课,我们会详细讲解如何编写类的方法,这里做一个简单说明
语法:
访问修饰符 返回值类型 方法名(){
方法体
}方法名命名规则:
[*]骆驼式命名法:方法或变量名的第一个单词首字母小写,后面每个单词的首字母大写,比如showCenter,userName 等
[*]帕斯卡命名法:每一个单词的首字母都大写.比如ShowCenter.UserName等
大家可以看情况选择合适的命名法
7.如何创建和定义对象
类school定义好了,下面就可以根据定义的模板创建对象了.由类生成对象,称为类的实例化过程,一个实例也就是一个对象,一个类可以生成多个对象
语法:
类名 对象名 = new 类名();在创建类的对象时,需要使用C#的new关键字,例如,创建一个School类的对象School center = new School();这里变量center的类型就是School类型.使用new创建对象时,我们并没有给他的数据成员赋一个特定的值.考虑到每个对象的属性值可能是不一样的,所以在创建对象后再给它的数据成员赋值
在C#中,要引用对象的属性和方法,需要使用"."操作符
语法:
对象名.属性 //引用对象的属性
对象名.方法名() //引用对象的方法例如:(实例化上面写到的School类)
class Program
{
static void Main(string[] args)
{
School center = new School();
Console.WriteLine("****初始化成员变量前****");
center.showCenter();
center.schoolName = "北京中心";//给schoolName属性赋值
center.classNumber = 10;//给classNumber属性赋值
center.labNumber = 10;//给labNumber属性赋值
Console.WriteLine("****初始化成员变量后****");
center.showCenter();
}
}课件下载:
本节课就到这,这节课内容比较多,手打教程也很辛苦,希望大家多多回帖加分支持我!谢谢大家
王尼玛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#初级开发原创教程第十三课 字符串的操作
感谢尼玛,等时间赋予了,我从头跟你学C#~{:6_214:}
艾玛看不懂咋整
从第一课开始看到这里,一直没有评论过!实在抱歉!非常感谢尼玛大神的无私奉献!希望继续更新,真心感觉教程写的非常不错!
希望继续更新!!!谢谢!!! @Shark恒 这么好的教程为什么没有人回复和评分啊!希望论坛多出一些和王尼玛的大神! 学习的必需品啊 今天起我给大家讲解C#开发教程, 感谢楼主分享
页:
[1]