C#编程:结构化设计的局限与C#的优势
需积分: 11 32 浏览量
更新于2024-07-13
收藏 4.81MB PPT 举报
"结构程序设计的不足—代码不能重用-C#经典教程"
在传统的结构化程序设计中,代码往往被组织成一系列顺序执行的步骤,每个步骤针对特定的任务。这样的设计方式在早期的编程实践中非常常见,比如在C语言中,如给定的示例所示。然而,这段代码揭示了结构化程序设计的一个显著缺点:代码复用性差。
在示例中,我们看到了创建两辆汽车(car1 和 car2)的逻辑,每辆汽车都有门的数量(doorN)、颜色(color)和速度(speed)属性。为了创建两辆不同的车,我们不得不重复相同的代码段,只是将变量值改变。这种做法不仅使代码冗长,而且不易维护。如果需要修改汽车属性的打印格式或添加新属性,我们必须在每个实例中分别修改,这违反了“Don't Repeat Yourself”(DRY)原则。
C#作为一种现代的面向对象编程语言,旨在解决这些问题。它引入了类(Class)的概念,允许我们将数据和操作数据的方法封装在一起,形成可重用的模块。例如,我们可以创建一个`Car`类,其中包含`doorN`、`color`和`speed`作为成员变量,以及用于打印这些属性的方法。这样,创建多辆汽车时,只需实例化`Car`类的不同对象,并设置相应的属性值,无需重复代码。
```csharp
public class Car
{
public int DoorN { get; set; }
public int Color { get; set; }
public int Speed { get; set; }
public void PrintCarInfo()
{
Console.WriteLine($"{DoorN} {Color} {Speed}");
}
}
public static void Main()
{
Car car1 = new Car();
car1.DoorN = 2;
car1.Color = 0;
car1.Speed = 100;
car1.PrintCarInfo();
Car car2 = new Car();
car2.DoorN = 4;
car2.Color = 1;
car2.Speed = 80;
car2.PrintCarInfo();
}
```
这里,`Car`类代表了一个汽车的抽象,每个实例(car1 和 car2)都是该类的具体表现。通过这种方式,我们不仅可以简化代码,还能更容易地扩展功能。如果要添加新属性或更改打印格式,只需在`Car`类中进行改动,所有使用到这个类的地方都会自动更新。
.NET Framework 是微软推出的软件开发平台,它包括了Common Language Runtime (CLR)、Just-In-Time (JIT) 编译器、Common Type System (CTS) 和 Microsoft Intermediate Language (MSIL) 等组件。CLR作为运行时环境,负责管理代码的执行,包括类型安全检查、垃圾回收和异常处理。JIT编译器将源代码编译为机器码,而CTS确保不同语言编写的代码可以在.NET环境中无缝交互。MSIL是.NET平台上的中间语言,代码首先会被编译成MSIL,然后在运行时由JIT编译为特定平台的机器码。
`.NET Framework`还提供了丰富的命名空间,如System、System.IO、System.Collections.Generic等,涵盖了许多基础和高级功能,使得开发者可以便捷地利用这些库构建应用程序。C#作为.NET Framework的一部分,可以直接利用这些服务,使得开发更加高效和便捷。
总结起来,C#通过引入面向对象编程和.NET Framework的支持,克服了结构化程序设计中的代码重用问题,提高了代码的可读性、可维护性和可扩展性。它结合了C/C++的灵活性和VB的高效性,为现代软件开发提供了强大的工具。
220 浏览量
2018-01-06 上传
2018-08-06 上传
2022-05-07 上传
2022-05-07 上传
156 浏览量
2012-10-10 上传
2010-03-27 上传
2010-09-06 上传
我的小可乐
- 粉丝: 26
- 资源: 2万+
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载