34
幻幻幻 1 26 幻幻4幻 Ver. 1.0 幻4幻 幻幻幻幻幻 在在在在 在在在在 : 在在在在在在在 在在在在在在在在在在在 在在在在 在在在在在在在在在在在 幻幻

在本章中,您将学习 : 定义抽象和封装 使用访问指定符实现封装 使用方法 使用静态变量和静态函数

Embed Size (px)

DESCRIPTION

在本章中,您将学习 : 定义抽象和封装 使用访问指定符实现封装 使用方法 使用静态变量和静态函数. 目标. 重点 定义抽象和封装 使用访问指定符实现封装 使用方法 使用静态变量和静态函数 难点 使用访问指定符实现封装 使用方法 使用静态变量和静态函数. 重点与难点. 教学计划. 封装和抽象是任何面向对象编程语言的重要特性。 抽象涉及仅抽取相关的信息。 封装涉及将一个或多个组件打包在一起。. 介绍抽象和封装. 汽车销售员注意到不同的人有不同的喜好。 某些人对汽车的速度感兴趣,某些人对价格感兴趣,某些人对发动机感兴趣,而某些人对汽车的式样感兴趣。 - PowerPoint PPT Presentation

Citation preview

幻灯片 1(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

在本章中,您将学习 :定义抽象和封装使用访问指定符实现封装使用方法使用静态变量和静态函数

目标

幻灯片 2(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

重点定义抽象和封装使用访问指定符实现封装使用方法使用静态变量和静态函数

难点使用访问指定符实现封装使用方法使用静态变量和静态函数

重点与难点

幻灯片 3(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

序号 主题 计划教学时间 (分钟 )

1 定义抽象和封装 20

2 使用访问指定符实现封装 35

3 使用方法 40

4 使用静态变量和静态函数 90

教学计划

幻灯片 4(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

封装和抽象是任何面向对象编程语言的重要特性。抽象涉及仅抽取相关的信息。封装涉及将一个或多个组件打包在一起。

介绍抽象和封装

幻灯片 5(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

汽车销售员注意到不同的人有不同的喜好。某些人对汽车的速度感兴趣,某些人对价格感兴趣,某些人对发动机感兴趣,而某些人对汽车的式样感兴趣。虽然他们都想买车,但是每个人对汽车的特定属性或功能有不同的兴趣。销售员了解汽车的所有信息,但是他为有意购买的人仅提供一些相关的信息。因此,销售员为顾客抽象并显示相关的信息。

定义抽象

幻灯片 6(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

封装从字面上解释为“包围或者密封”。封装定义成将物理或逻辑包中的一个或多个项放入封套的过程。它防止对不需要的信息的访问。

定义封装

幻灯片 7(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

访问指定符定义一定范围的类成员。类成员引用类中的变量和函数。程序可以有一个或多个类。您可能希望类的某些成员能够被其他类访问。但是,您也可能不希望类的某些成员被类之外的其他类访问。

使用访问指定符实现封装

幻灯片 8(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

C# 支持以下访问指定符:public

该访问区分符使类能够向其它函数和对象显示其成员变量和成员函数,任何被声明为 public 的成员都可以被外部类所访问。private

能隐藏其成员变量和成员函数,使其它类对象和函数不能访问他们,包括子类都不能访问,变量和函数默认为 private 属性。protected

能够使成员变量和函数不被除子类之外的其它类所访问Internal

能够使得类向其它函数和对象展示其成员变量和成员函数。类的缺省访问区分符为 internal

protected internal

能够使得类向包含类、派生类、或同一个应用程序中的类显示其成员变量和成员函数

访问指定符的类型

幻灯片 9(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

问题描述:编写一个能够计算长方形和矩形面积的程序。

程序代码:using System;

class Area

{

static int Result;

public static void AreaRec()

{

int Length,Breadth;

Console.WriteLine("Enter the Length of Rectangle");

Length = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Enter the Breadth of Rectangle");

Breadth = Convert.ToInt32(Console.ReadLine());

Result = Length*Breadth;

Console.WriteLine("The Area of Rectangle is{0}",Result);

}

public static void AreaSqu()

{

int Side;

Console.WriteLine("Enter the Side of the Square");

Side = Convert.ToInt32(Console.ReadLine());

Result = Side *Side ;

Console.WriteLine("The Area of Square is{0}",Result);

}

static void Main(string[] args)

{

int Option;

Console.WriteLine("Main Menu");

Console.WriteLine("1.Area of Rectangle");

Console.WriteLine("2.Area of Square");

Console.WriteLine("Enter your choice (1, 2)");

Option = Convert.ToInt32(Console.ReadLine());

switch (Option)

{

case 1:

AreaRec();

break;

case 2:

AreaSqu();

break;

default:

Console.WriteLine("Incorrect Choice");

break;

}

Console.ReadLine();

}

}

活动:使用访问指定符计算面积和体积

幻灯片 10(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

方法由一个或多个程序语句组成,通过引用方法名能够执行方法。要使用方法,您需要:

定义方法调用方法

使用方法

幻灯片 11(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象定义方法

定义方法意味着声明其结构的元素。请注意定义方法的语法:<Access specifier> <Return Type> <Method Name>(Parameter List)

{

Method Body

}

幻灯片 12(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象定义方法(续)

方法声明的元素包括方法名、参数列表、返回类型和方法主体。以下是方法的元素:

访问指定符返回类型 方法名

参数列表 方法主体

让我们了解方法声明的每个元素。

幻灯片 13(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

确定能够访问变量或方法的其他类的范围。

定义方法(续)

定义方法意味着声明其结构的元素。请注意定义方法的语法:<Access specifier> <Return Type>

<Method Name>(Parameter List)

{

Method Body

}

幻灯片 14(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

定义方法意味着声明其结构的元素。请注意定义方法的语法:<Access specifier> <Return Type>

<Method Name>(Parameter List)

{

Method Body

}

方法能够返回任何类型的值。如果方法不返回任何值,则使用空作为返回类型。

定义方法(续)

幻灯片 15(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

定义方法意味着声明其结构的元素。请注意定义方法的语法:<Access specifier> <Return Type>

<Method Name>(Parameter List)

{

Method Body

}

这是唯一的标识并且是区分大小写的。方法名不能与变量名或类中声明的其他非方法项相同。

定义方法(续)

幻灯片 16(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

定义方法意味着声明其结构的元素。请注意定义方法的语法:<Access specifier> <Return Type>

<Method Name>(Parameter List)

{

Method Body

}

用于传递和接收来自方法的数据。它在圆括号之间。即使没有参数,也要有圆括号。

定义方法(续)

幻灯片 17(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

定义方法意味着声明其结构的元素。请注意定义方法的语法:<Access specifier> <Return Type>

<Method Name>(Parameter List)

{

Method Body

}

包含完成要求操作所需的指令集。

定义方法(续)

幻灯片 18(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

定义方法后,您可以通过调用它来执行。您可以通过方法名调用它。方法名后跟圆括号,即使方法调用没有参数,圆括号还是要保留,如以下示例所示:MethodName();

调用方法

幻灯片 19(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

以下是调用方法的示例:using System;

class Calculator

{

public int AddNumber(int num1, int num2)

{

int result;

result = num1 + num2;

return result;

}

static void Main(string[] args)

调用方法(续)

幻灯片 20(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

{

Calculator cal = new Calculator();

// The following statement is calling the

// AddNumber method and passing 10 and

// 20 as the parameter list.

int value=cal.AddNumber(10, 20);

Console.WriteLine("The result is {0}", value);

Console.ReadLine();

}

}

调用方法(续)

幻灯片 21(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

也可以用参数来声明方法。考虑用参数声明方法的例子:void DisplayResult (int result){

//…..}

当使用参数声明方法时,这些方法应该使用参数来调用。带有参数的方法是通过使用以下机制传递值被调用的:

值:也称为传参数,可以传入方法,但不能传出引用:可以传入方法,也传出输出:称为传出参数,数据可以从方法中传出

使用带参数的方法

幻灯片 22(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

值: 值传递的参数在内存中创建一个副本。以下示例显示值传递的参数:void CalculateSum( int num1, int num2){

//…}void Accept(){

int val1=10;int val2=2;CalculateSum(val1,val2);

}

使用带参数的方法(续)

幻灯片 23(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

引用: 引用传递的参数不在内存中创建变量的独立副本。引用参数存储传递的数据成员的内存地址。以下示例显示引用传递的参数:void CalculateSum( ref int num1,ref int num2)

{

//…

}

void Accept()

{

int val1=10;

int val2=2;

CalculateSum( ref val1,ref val2);

}

使用带参数的方法(续)

幻灯片 24(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

输出: 输出参数用于将值从方法中传递出来。以下示例显示输出传递的参数:void CalculateSum( ref int num1,ref int num2, out int result){

result=num1+num2;}void Accept(){

int val1=10;int val2=2;int recieveVal;CalculateSum( ref val1,ref val2,out

recieveVal);}

使用带参数的方法(续)

幻灯片 25(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

问题描述:编写一个能够在方法中使用引用类型的参数交换数字的程序。

演示:使用带参数的方法交换两个数字

幻灯片 26(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象静态变量和静态函数

每个对象有其自己的成员变量集。如果您希望变量在整个程序中保留其值,则可以在程序中将它声明为静态变量。要操作和使用静态变量值,还可以将函数定义为静态函数。

幻灯片 27(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象静态变量

关键字 ‘ static’ 意味着对于类仅存在给定变量的一个实例。静态变量用于定义常量,因为调用类而不创建类的实例可以获得它们的值。静态变量可以在成员函数或类定义之外初始化。与其他成员变量不同,对于类的所有对象,内存中仅存在一份静态变量的副本。

幻灯片 28(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象静态函数

静态函数可以仅访问静态变量。在对象创建之前,静态函数也已经存在。

幻灯片 29(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象演示:使用静态函数计算函数的调用数

问题描述:John 是 Zed Axis Technology 的软件开发者,他需要检查函数调用的次数。同时,要求他创建一个函数 “ CountFunction” ,请帮助 John 完成此任务。

using System;

public class FunctionCount

{

public static int count = 0;

public static void CountFunction()

{

count++;

System.Console.WriteLine("Count function is Called by Main {0} times.", count);

}

public static void Main(string[] args)

{

for (int var = 0; var < 10; var++)

{

FunctionCount.CountFunction();

}

Console.ReadLine();

}

}

幻灯片 30(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

1 、开发一个软件应用程序,该程序要计算用户输入的数的阶乘,请分别使用静态函数和静态变量、非静态函数与变量来创建此程序。

提示:用户输入数的极限是 1-20

主要目的 :

掌握控制台应用程序的编写与运行 掌握函数的定义与调用的使用 掌握静态函数和变量与非静态函数和变量的区别

计划完成时间: 30 分钟

学生独立实践

幻灯片 31(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

在本章中,您学习了:抽象是为了保留仅与特定用途有关的信息而减少信息内容的过程。封装是隐藏某个对象的与其基本特性没有很大关系的所有详细信息的过程。访问指定符用于确定其他类或函数是否可以访问特定类的成员变量和函数。公共访问指定符允许类向其他函数和对象显示其成员变量和成员函数。专用访问指定符允许类隐藏其成员变量和成员函数,使其他类函数和对象不能访问它们。

小结

幻灯片 32(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

受保护的访问指定符允许类隐藏其成员变量和成员函数,使其他类对象和函数不能访问它们,就像执行继承时的专用访问指定符。方法由一条或多条程序语句组成,引用方法名可以执行方法。定义方法意味着声明其结构的元素。 可以与方法一起使用的访问指定符是:公共、受保护、内部、受保护的内部和专用。参数使得信息能够传入和传出方法。当您定义一个方法时,可以在圆括号中包括一列参数。

小结(续)

幻灯片 33(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

可以使用以下任何一个参数类型来传递参数:值引用输出

通过值传递是 C# 中传递参数的缺省机制。 引用参数是对数据成员的内存位置的引用。 输出参数类似于引用参数,但是它们只将数据从方法中传出,而不传入方法。 返回语句使方法能够立即返回给调用者。

小结(续)

幻灯片 34(共 26张)

第 4 章Ver. 1.0

第 4 课 封装和抽象

1 、编写一个程序,要计算用户输入的数的阶乘。请使用静态函数和静态变量创建程序。

2 、编写程序实现用户输入三个数后,确定最大数,并显示出来

作业