面向对象概述:
要学习好面向对象,我们应该从三个问题入手:
1、什么是面向对象? 2、为什么要面向对象? 3、该怎么面向对象?
面向对象,首先要有一个对象,那么对象是什么呢?
对象的定义是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
因此面向对象这个对象,指的是客体。所谓客体是指客观存在的对象实体和主观抽象的概念。(摘自@赵学智《什么是对象?为什么要面向对象?该怎么面向对象》)
由此可见,对象就是一个客体,很多人认为类就是一个对象,但准确来说,对象是以类为模板创建出来的,“对象”与“类的实例”是对应的。像我们平常在编程时经常会new一个对象出来,这个方法就是将抽象的类具体化为一个对象,对象是灵活的,可以被自由定义的。
创建对象是简化编程方法的必需品,所以面向对象是编程的一个重要思想。
要理解面向对象,就要从结构性编程入手——功能分解法。即将一个大的问题分解为几个小的问题,再分解为更细小的问题,直到得到的问题可以用一个函数来实现为止。
eg.举一个简单的例子:计算出1999年5月10日到2006年3月8日期间一共有多少天?
首先,定义一个结构体类型:
1 //封装日期信息 2 public struct MyDate 3 { 4 public int Year; //定义年 5 public int Month; //定义月 6 public int Day; //定义日 7 }
然后,将算法写到一个新的函数中:
1 static int TwoDate(MyDate begin,MyDate end) 2 { 3 ...//此处填写计算时间的方法,省略 4 }
最后,使用函数进行调用:
1 MyDate d1,d2; //定义起始和结束日期 2 d1.Year = 1999; 3 d1.Month = 5; 4 d1.Day =10; 5 6 d2.Year = 2006; 7 d2.Month = 3; 8 d2.Day =8; 9 10 //计算结果 11 int days = TwoDate(d1,d2);
面向对象也与此方法雷同,不同的地方在于以下几点:
1、所有的函数都放在了一个类中,成为某个类的成员。
2、外界对象不能直接调用类的成员函数,必须先创建一个对象,再通过对象来调用这些函数。
3、函数的声明分为了public和private两种,只有public可以被外界调用,确保了私有信息的可访问性限制。
所以,采用面向对象技术开发可以达到较高的开发效率,与较低的维护成本,系统的可扩展性也更好。
那么,该如何用面向对象解决问题呢?以下几节将会详细讲述。
目录:(暂时修订,不断更新……)
一:面向对象的四大基本特性
1、封装:2、抽象:3、继承:4、多态:
二:方法的理解和应用
类的构造函数;
深入理解值类型、引用类型;
类成员的访问权限;
子类、父类;
命名空间和类库;
方法重载、隐藏与虚方法(理解即可);
抽象基类与接口;
委托;
三:事件——winform的简单使用