面向对象设计的方法工具
-
封装,隐藏内部实现
-
继承,复用现有代码
-
多态,改写对象行为
确定需要的类
|
我要定义一个数据库操作的类
|
给每个类提供一组完整的操作
|
我要一组完整的操作,比如数据库查询,数据的插入,更新,删除等,
|
1、 首先定义一个水果类;
2、 定义一个橙子类,继承了水果类;
3、 定义一个苹果类,继承了水果类
publicclassFruit
{
publicDouble重量;
publicString颜色;
privateString私有属性;
publicvoid进货();
publicvoid销售();
}
publicclassOrange : Fruit
{
Public void Orange()
{
Console.WriteLine("An orange is got!");
}
}
publicclassApple : Fruit
{
Public void Apple()
{
Console.WriteLine("An apple is got!");
}
}
这样子定义的Orange类一样的有 重量、颜色的属性(注意私有属性在Orange中没有),也有进货,销售的操作;但是Orange有了一个Orange()的操作,而这个操作在Fruit中是没有的。这就是继承。
三、多态,多态的含义就是C#中允许多个方法的方法名相同,只要它们的方法签名不同就可以。如果简单一点讲,就是我定义了两个名字一样的方法,但是两个方法的参数不同,我们在调用的时候,程序会根据不同的参数调用不同的方法,这就是多态。当然这是比较通俗的理解,专业描述多态的概念是:当不同的对象接受到相同的消息名(或者说当不同的对象调用相同的名称的成员函数)时,可能引起不同的行为(执行不同的的代码)。这种现象称为多态性。
publicclassTest
{
publicstaticvoid Print(string str)
{
Console.WriteLine(str);
}
publicstaticvoid Print(int i)
{
Console.WriteLine(i.ToString());//调用ToString方法把整型转换为string类型。
}
publicstaticvoid Print(bool b)
{
if (b == true)//判断后输出结果。
{
Console.WriteLine("True");
}
else
{
Console.WriteLine("False");
}
}
publicstaticvoid Print(paramsstring[] str)
{
//这个方法实现了对未知数量的参数的输出。使用params关键字。
for (int i = 0; i < str.Length; ++i)
{
Console.WriteLine(str[i]);
}
}
}
}
下面进行这些函数的调用
publicclassMainClass
{
publicstaticvoid Main()
{
bool a = false;
Test.Print("david","jack","mike");
Test.Print(5);
Test.Print(true);
Test.Print(a);
Test.Print("successful!");
}
}
}
长期的面向对象程序设计,我们隐约可以发现,好像很多东西,基本原理都是一样的,但是程序设计的工作量并没有因为程序设计的熟练度而减低,这个时候,我们可以考虑模式编程了。
模 式是实践经验的总结,也是一种设计思想的表述形式。在对待模式的态度上,我认为我们不应该抱着学习的态度,而应该抱着“了解”的态度。因为它是经验的总 结,不是靠读书学习就能得到的东西。“在做软件设计的时候,每个人都想使用某种模式来提高软件的韧度,却不是每个人都知道,在他的设计中,已经采用了这种 模式”,谈不谈模式其实都无所谓,只要你能说出你所设计的系统到底好在什么地方。
设计模式简介
每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。
设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。面向对象设计模式描述了面向对象设计过程中、特定场景下、类与相互通信的对象之间常见的组织关系。
设计模式与面向对象
面向对象设计模式解决的是“类与相互通信的对象之间的组织关系,包括它们的角色、职责、协作方式几个方面。面向对象设计模式是“好的面向对象设计”,所谓“好的面向对象设计”是那些可以满足“应对变化,提高复用”的设计。面向对象设计模式描述的是软件设计,因此它是独立于编程语言的,但是面向对象设计模式的最终实现仍然要使用面向对象编程语言来表达,本课程基于C#语言,但实际上它适用于支持.NET框架的所有.NET语言,如Visual Basic.NET、C++/CLI等。面向对象设计模式不像算法技巧,可以照搬照用,它是建立在对“面向对象”纯熟、深入的理解的基础上的经验性认识。掌握面向对象设计模式的前提是首先掌握“面向对象”!所以如果要想总结一些设计模式出来,必须精通面向对象的思想,因为这是一种思想,不是一种技术,需要一定的经验,一定的尝试,一定的运用实践才可以悟出来的。
目前我比较数量掌握的是工厂模式,有关详细的说明,可以看看我在广铁科技2007年第四期发表的一篇文章。这里不做详细阐述。