C#入门经典—第八章

来源:互联网 发布:如何查看ftp的端口号 编辑:程序博客网 时间:2024/05/01 17:44

第八章 面向对象编程简介

  • 什么是面向对象编程
  • OOP技术
  • Windows Forms应用程序对OOP的依赖关系

8.1 面向对象编程的含义

OOP技术常常要使用许多代码模块,每个模块都能提供特定的功能,每个模块都是独立的,甚至与其它模块完全独立。

这种模块化方法提供了非常大的多样性,大大增加了重用代码的机会。

8.1.1 对象的含义

对象就是OOP应用程序的一个组成部件。

这部分程序可以是一个过程、一些数据或一些更抽象的实体。

使用统一建模语言(UML)语法研究类和对象。

UML是为应用程序建模而设计的,从组成应用程序的对象,到它们执行的操作等。

1. 属性和字段

可以通过属性和字段访问对象中包含的数据。

常见情况是把字段设置为私有,通过公共属性访问它们。

2. 方法

方法用于表示对象中的函数。

8.1.2 一切皆对象

8.1.3 对象的生命周期

每个对象都有一个明确定义的生命周期,除了“正在使用”的正常状态外,还有两个重要的阶段:

  • 构造阶段:对象最初进行实例化的时期。
  • 析构阶段:在删除一个对象时,常常要执行一些清理工作。
1. 构造函数

构造函数就是用于初始化数据的函数。

所有的类定义都至少包含一个构造函数。

在这些构造函数中可能有一个默认的构造函数,该函数没有参数,与类同名。

还可能包含几个带参数的构造函数,为非默认的构造函数。

在C#中,使用new关键字来调用构造函数。

8.1.4 静态和实例类成员

静态成员可以在类的实例间共享,所以可以将它们看作是类的全局对象。

静态属性和静态字段可以访问独立于任何对象实例的数据。

静态方法可以执行与对象类型相关、但与对象实例无关的命令。

1. 静态构造函数、

静态构造函数不能直接调用,只能在下述情况下执行:

  • 创建包含静态构造函数的类实例时。
  • 访问包含静态构造函数的类的静态成员时
2. 静态类

8.2 OOP技术

对象的其它一些特性:

  • 接口
  • 继承
  • 多态性
  • 对象之间的关系
  • 运算符重载
  • 事件
  • 引用类型和值类型

8.2.1 接口

接口是把公共实例(非静态)方法和属性结合起来,以封装特定功能的一个集合。

注:

接口不能单独存在。

接口不能包含实现其成员的任何代码,而只能定义成员本身。

实现过程必须在实现接口的类中完成。

可删除的对象

IDisposable接口。

支持IDisposable接口的对象必须实现其Dispose()方法,即它们必须提供这个方法的代码。

8.2.2 继承

C#中的对象仅能直接派生于一个基类。

可访问性:

派生类不能访问基类的私有成员,但可以访问其公共成员。

只有派生类才能访问protected成员。

外部代码不能访问protected和private成员。

8.2.3 多态性

8.2.4 对象之间的关系

  • 包含关系
  • 集合关系

8.2.5 运算重载符

8.2.6 事件

8.2.7 引用类型和值类型

8.3 Windows应用程序中的OOP

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication3{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {            ((Button)sender).Text = "Clicked!";            Button newButton = new Button();            newButton.Text = "New Button!";            newButton.Click += new EventHandler(newButton_Click);            Controls.Add(newButton);        }        private void newButton_Click(object sender, System.EventArgs e)        {            ((Button)sender).Text = "Clicked!";        }    }}



原创粉丝点击