1.1.1 面向对象背景
- 对处理的事物进行分析和总结,抽象出事物的特性和行为,封装成相应的类,最后实例化成对象并进行操作。这种程序设计的思想称为面向对象
- 在面向对象出现之前,早期的计算机编程是基于面向过程的方式进行程序设计的。面向过程的程序设计方式又称为结构化程序设计
- 面向过程程序设计缺陷 :程序不容易修改和扩展,维护性差、代码冗余,复用性差、程序灵活性差
1.1.2 面向对象定义
- 将现实世界的事物抽象成类,帮助人们实现对现实世界的抽象与建模
- 通过面向对象的方法,更利于以人能理解的方式对复杂系统进行分析、设计与编程
- 面向对象程序设计优势:将对象作为程序的基本单元 、将程序和数据封闭在对象中 、对象可重用可扩展,灵活性高
1.1.3 面向对象原理
示例:
- 三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连成一片。眼看就要灭掉东吴,统一天下。曹操大悦,于是大宴文武百官。酒席间,曹操诗性大发,不觉吟道:“喝酒唱歌,人生真爽……”
- 一臣子命印刷工匠刻版印刷,以便流传天下
- 第二天曹操重新一看,“喝酒唱歌”中的“喝”和“唱”太过通俗,改为“对酒当歌”才够优雅
- 工匠连夜赶工按曹操的要求制作了第二版,虽然只改动两个字,也需要从头开始
- 第二版完工后,再次请曹操过目,曹操细细一品,觉得“人生真爽”太过直接,改为“人生几何?”才有意境
- 虽然只改动两个字,但第三版仍需要从头开始刻版印刷,印刷工匠当场晕倒
思考:
如果采用活字印刷术来实现曹操的需求会怎样?
通过刻板印刷和活字印刷的对比,我们联想到软件开发中的两种编程思想
面对频繁变化的需求,面向对象编程的优势
1.2.1 类和对象的概念
- 类是对事物的一种抽象定义,类是具有共同特征和行为的一类事物的统称
- 抽象是指对具体事物进行概括,抽取某类对象的公共特性和行为并加以描述的过程。抽象的过程就是对现实事物进行认识和分析的过程
- 对象是类的实例,拥有具体特征和行为之后的类就成为了对象。对象是独一无二的具体个体,用来描述现实世界的某个事物
- 类是抽象的,对象是具体的
- 如果给类的所有属性赋值,所有行为进行具体实现,将会得到一个对象。而具有相同特征的对象则可以抽象出一个类
1.2.2 C#中的类
C# 是面向对象的语言,其基本的组成单位就是类
语法:
[ 访问修饰符 ] class 类名
{
类的内部成员 ;
}
public class Commodity
{
}
定义一个公共(public)的类(class),类的名字是 Commodity
类的成员包括字段、属性、方法、常量、事件和索引器等
示例:
public class Commodity
{
public string name; // 名称
public double price; // 价格
public DateTime productionDate; // 生产日期
public string factory; // 生产厂家
public int expire; // 保质期
}
定义字段与定义变量相同,需要指定字段类型和字段名。类型前的 public 是访问修饰符,表示该字段是公共的,在其他地方都能访问
定义类中的方法
示例:
//定义字段:描述商品特征
public class Commodity
{
public string name; // 名称
public double price; // 价格
public DateTime productionDate; // 生产日期
public string factory; // 生产厂家
public int expire; // 保质期
//方法:展示商品信息
public void Show(){
Console.WriteLine(" 名称:\t\t{0}", name);
Console.WriteLine(" 价格:\t\t{0}", price);
Console.WriteLine(" 生产日期:\t{0}", productionDate);
Console.WriteLine(" 厂家:\t\t{0}", factory);
Console.WriteLine(" 保质期:\t{0}", expire);
}
}
1.3.1 对象的创建及访问
类是抽象的概念,需要将类实例化为对象后再进行操作
示例:
class Program
{
static void Main(string[] args)
{
Commodity cake = new Commodity();
}
}
字段是类的主要成员之一,实例化的对象可以通过“对象 . 字段”的方式来修改或访问该对象的字段值
示例:
class Program
{
static void Main(string[] args)
{
Commodity cake = new Commodity();
cake.name = " 蛋糕 ";
cake.price = 18;
cake.productionDate = DateTime.Parse("2018-9-18");
cake.factory = " 武汉美食食品 ";
cake.expire = 90;
Console.WriteLine(" 名称 \t 价格 ( 元 )\t 生产日期 \t 厂家 \t\t 保质期 ( 天 )");
Console.WriteLine("=============================================");
Console.WriteLine("{0}\t{1}\t\t{2}\t{3}\t{4}\t", cake.name, cake.price,
cake.productionDate.ToShortDateString(), cake.factory, cake.expire);
}
}
方法也是类的主要成员之一,其使用方法与字段类似,在实例化对象后,通过“对象 . 方法”进行调用
示例:
class Program
{
static void Main(string[] args)
{
Commodity cake = new Commodity();
cake.name = " 蛋糕 ";
cake.price = 18;
cake.productionDate = DateTime.Parse("2018-9-18");
cake.factory = " 武汉美食食品 ";
cake.expire = 90;
cake.Show(); // 调用类的方法
}
}
总结:
- 类是具有共同特征和行为的一类事物的统称
- 对象是类的实例,是独一无二的具体个体,用来描述现实世界的某个事物
- 类的特征使用字段来描述,类的行为使用方法来描述
- 在C#中使用new关键字来创建对象
- 通过“对象.字段”的方式来修改或访问该对象的字段值
- 通过“对象.方法()”调用类中的访问