学习面向对象技术前,需要了解面向过程的编程思想,识别面向过程编程存在的问题,才能更好理解面向对象编程。
概念
面向过程的编程是按照给定任务的处理步骤,进行组织编写代码的,如:单击登录按钮完成用户登录系统的功能,需要执行以下步骤
- 验证用户名和密码是否输入,是否符合规则
- 创建数据库连接;
- 通过数据库连接,根据用户名检索输入的该用户的信息;
- 如果该用户存在,对输入密码字符串进行加密转换为密文,用密文和该用户存储的密码进行比对;如果一致则允许进入系统,否则将提示信息反馈给用户。
写代码时,我们完全可以把整个处理过程写到登录按钮的单击事件中,围绕着登录系统过程一步一步完成编程。当然,如果单击事件代码量太多,也可以将一些功能代码写成函数,提供单击事件调用。如:数据库连接、字符串转密文等函数。这些都是面向过程编程。
特点
优点:面向过程的编程思想和我们实际的任务处理过程是一致的,简单直接,易于入门理解,开发速度快;代码可实现复用,但粒度较小,属于函数级复用;代码仅通过过程调用实现,类似计算机指令的调用,执行效率较高
缺点 :当业务规则发生变化时,如:原系统使用的mysql数据库,现在更换为Oracle数据库,则必须修改数据库连接和信息检索中的代码,可维护性和可扩展性差。
适应场景
当业务逻辑比较简单、项目规模不大、需求稳定,使用面向过程能更快的实现。如果面对功能复杂且扩展性要求比较高的项目时,我们就需要使用面向对象的编程思想。
注意使用面向对象的编程语言写出代码不一定就体现面向对象思想的。如:假定我们要设计一个媒体播放器(只从软件设计的角度,不涉及硬件)。该媒体播放器目前只支持音频文件mp3和wav
public class MediaPlayer
{
private void PlayMp3()
{
MessageBox.Show("Play the mp3 file.");
}
private void PlayWav()
{
MessageBox.Show("Play the wav file.");
}
public void Play(string audioType)
{
switch (audioType.ToLower())
{
case ("mp3"):
PlayMp3();
break;
case ("wav"):
PlayWav();
break;
}
}
}
示例代码参考:https://blog.csdn.net/hotmailmsn/article/details/1405474