第四章 在 C# 中实现 OOP 概念.

Slides:



Advertisements
Similar presentations
主要内容 Java 的常用包 Java 的常用包 “ == ” 和 “ equals ” 的用法 “ == ” 和 “ equals ” 的用法 基本数据类型与引用类型 基本数据类型与引用类型 String 和 StringBuffer String 和 StringBuffer 对象的克隆( clone.
Advertisements

软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
第四章 类、对象和接口.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
项目6 通用堆栈.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
四資二甲 第三週作業 物件導向程式設計.
C#程序设计案例教程 第3章 程 序 结 构.
面向对象的程序设计(一).
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
第一章 面向对象程序设计.
C#程序设计 10软件1、2班 王槐彬 计算机工程学院.
第二章 JAVA语言基础.
類別與物件 Class & Object.
第三章 控制结构.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
Ch08 巢狀類別 物件導向程式設計(II).
程式設計實作.
第5章 异常处理 王德俊 上海交通大学继续教育学院.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
C#程序设计 c# programming 泛型 C#程序设计课程组.
.NET 程式設計入門(使用 C#) 講師:鄧智鴻.
第二章 C# 基础知识.
常用工具类.
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
第三章 C#面向对象初级编程 面向对象得程序设计越来越受到编程人员的喜爱。类和对象是面向对象程序设计中的重要概念。封装性、继承性和多态性是面向对象的特点,本章旨在全面说明C#编写面向对象程序设计的方法。
第六章 继承性和派生类 胡昊 南京大学计算机系软件所.
程式設計實作.
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
C#程序设计基础 $3 成员、变量和常量.
第三章 在C#中实现面向对象的概念.
Java程序设计 第9章 继承和多态.
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
C#面向对象程序设计 $7 继承和多态性.
例外處理與 物件序列化(Exception Handling and Serialization of Objects)
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C#程序设计基础 第二章 数据类型.
第六章 属性、索引器、委托和事件.
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
第三章 C# 基础知识.
辅导课程八.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
C#程序设计基础 $3 成员、变量和常量.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第三章 数据抽象.
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
龍老師我不會Debug QQ.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
辅导课程十二.
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
迴圈(重複性結構) for while do while.
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
第6章 继承和多态 伍孝金
Summary
Presentation transcript:

第四章 在 C# 中实现 OOP 概念

回顾 2-1 变量是存放特定数据类型的值的容器,而常量也存放特定数据类型的值,但常量在整个程序中都保持不变 装箱是将值类型转换为引用类型,拆箱则是将引用类型转换为值类型 C# 提供以下类型的选择结构: if if…else switch…case C# 提供以下类型的循环结构: while 循环 do 循环 for 循环 foreach 循环

回顾 2-2 数组是可用于将类型相同的多个数据元素存储为一个实 体的数据结构 C# 中的结构可以在其内部定义方法并可包括一个构造函 数枚举是一组已命名的数字常量

目标 理解 C# 的类和对象 使用 C# 构造函数和析构函数 使用 C# 访问修饰符 使用方法 理解命名空间

对象 属性 行为 型号 行驶 价格 起动 停车 里程 属性 行为 名称 犬 吠 属性 行为 颜色 摇尾巴 品种 吃东西 车轮数量 刹车 犬 吠 属性 行为 颜色 摇尾巴 品种 吃东西 车轮数量 刹车 档的数量 加速 换档

类 类是 C# 中的一种结构,用于在程序中模拟现实生活的事物 语法: [访问修饰符] class <类名> { // 类的主体 } 示例: class Employee { // 类的主体 } // 成员变量 // 成员方法

成员变量 语法: … class Employee { private string _name; private char _gender; private string _qualification; private uint _salary; } [访问修饰符] 数据类型 成员变量; private int _name protected char status internal …. …. public bool userName 访问成员变量 步骤 1:创建一个类的对象 Employee objEmployee = new Employee(); 步骤 2:使用点号访问成员变量 objEmployee._name = “张三"; objEmployee._name = 'M';

只有 Student 类在 Teacher 类都在同一程序集中,才可访问internal成员 访问修饰符 2-1 Teacher 类 Student 类 private 成员 不可访问 protected 成员 不可访问 public 成员 可以访问 只有 Student 类在 Teacher 类都在同一程序集中,才可访问internal成员 internal 成员

访问修饰符 2-2 修饰符 说明 public internal private protected 所属类的成员以及非所属类的成员都可以访问 internal 当前程序集可以访问 private 只有所属类的成员才能访问 protected 所属类或派生自所属类的类型可以访问

构造函数 2-1 构造函数是类的一种特殊方法,每次创建类的实例都会调用它 语法: [访问修饰符] <类名>() { // 构造函数的主体 } 示例: … // 默认构造函数 Employee() { _qualification = "研究生"; }

构造函数 2-2 演示:示例 1 class Employee { private string _name; private char _gender; private string _qualification; private uint _salary; // 默认构造函数 private Employee() { _qualification = “研究生"; } static void Main(string[] args) { // 调用默认构造函数 Employee objEmployee = new Employee(); Console.WriteLine(“资格= " + objEmployee._qualification); Console.WriteLine(“薪水= " + objEmployee._salary); } 演示:示例 1

参数化构造函数 2-1 语法: [访问修饰符] <类名> () ([参数列表]) { // 构造函数的主体 } 示例: … // 参数化构造函数 Employee(string strQualification) { _qualification = strQualification; }

参数化构造函数 2-2 public static void Main(string[] args) { // 默认构造函数 // 调用默认构造函数 Employee objGraduate = new Employee(); // 调用参数化构造函数 Employee objMBA = new Employee(“ACCPS3“, ”张亮影“, ‘男', 5500); Console.WriteLine(“默认构造函数输出: \n资格=“ + objGraduate._qualification); Console.WriteLine(“\n参数化构造函数输出: \n资格= " +objMBA._qualification); } // 默认构造函数 private Employee() { _qualification = “研究生"; } // 参数化构造函数 private Employee(string strQualification, string strName, char gender, uint empSalary) { _qualification = strQualification; _name = strName; _gender = gender; _salary = empSalary; }

析构函数 是用于执行清除操作的特殊方法 语法: ~ <类名>()0 { // 析构函数的主体 } 示例: … ~Employee() { }

方法 对象的行为 PickUp() Ring() { { …. …. //用于传送和接收信号的代码 //用于显示主叫号码的代码 } } 接听 响铃 挂断 Hang() { …. //用于结束会话的代码 }

声明方法 2-1 语法 访问修饰符(可选),默认情况下为 private 如果不需要返回任何值,方法可能返回 void 数据类型 [访问修饰符] 返回类型 <方法名>([参数列表]) { // 方法主体 } 访问修饰符(可选),默认情况下为 private 如果不需要返回任何值,方法可能返回 void 数据类型

声明方法 2-2 方法 Assign() 的定义 ….. class Point { int x; int y; void Assign() System.Console.WriteLine(“输入点的值"); x = int.Parse(System.Console.ReadLine()); y = int.Parse(System.Console.ReadLine()); } 方法 Assign() 的定义 Assign( ) 方法 不返回任何值 (void) 不接收任何值 (Assign())

调用方法 3-1 语法 对象名.方法名([参数列表]); 实例 点号 类中的方法

调用方法 3-2 演示:示例 3 objParam1 与 objNumber2 相关联 private void Accept() { Console.WriteLine(“请输入实数部分"); _real = int.Parse(Console.ReadLine()); Console.WriteLine(“请输入虚数部分"); _imaginary = int.Parse(Console.ReadLine()); } void ShowResult() Console.WriteLine(“相加之和为:"); Console.WriteLine(_real + "+" + _imaginary + "i"); // 此方法用于将两个复数相加 ComplexNumber Add(ComplexNumber objParam1) objParam1._real += _real ; objParam1._imaginary += _imaginary; return objParam1; 调用方法 3-2 [STAThread] public static void Main(string[] args) { ComplexNumber objNumber1 = new ComplexNumber(); ComplexNumber objNumber2 = new ComplexNumber(); objNumber1.Accept(); objNumber2.Accept(); ComplexNumber objTemp = objNumber1.Add(objNumber2); objTemp.ShowResult(); } 接收实部和虚部的值 显示实部和虚部的值 objParam1 与 objNumber2 相关联 演示:示例 3 请参阅对象的实例变量

调用方法 3-3 return 语句 语法 return [表达式];

方法重载 4-1 电话 电 管理层 帐单 电信 固定电话 电 对不同的数据执行相同的任务 消费者 1 移动电话 供应商 1 电 供应商 2

方法重载 4-2 对不同数据执行相似的功能 … Class BillPayment { void PayBill(int telephoneNumber) //此方法用于支付固定电话话费 } void PayBill(long consumerNumber) //此方法用于支付电费 void PayBill(long consumerNumber, double amount) //此方法用于支付移动电话话费 对不同数据执行相似的功能

方法重载4-3 具有不同数量的参数的方法重载 int greatest(int num1, int num2) { Console.WriteLine(“{0} 和 {1} 相比, 最大的是: ", num1, num2); if(num1 > num2) return num1; } else return num2; int greatest(int num1, int num2, int num3) Console.WriteLine(“{0}, {1} 和 {2} 相比, 最大的是: ", num1, num2, num3); if(num1 > num2 && num1 > num3) else if(num2 > num1 && num2 > num3) return num3; 具有不同数量的参数的方法重载

方法重载 4-4 具有不同类型的参数的方法重载 int greatest(int[] numbers) { int temp = numbers[0]; for(int i = 1;i < numbers.Length;i++) if(temp < numbers[i]) temp = numbers[i]; } return temp; double greatest(double[] numbers) double temp = numbers[0]; 具有不同类型的参数的方法重载

命名空间 6-1 英国 纽卡斯尔 澳大利亚 纽卡斯尔

命名空间 6-2 类库 命名空间 AdminDept 命名空间 ITDept AdminDept.Manager Class Manager { long int salary; ……… } ……. { long int salary; ……. ……… } Class Manager AdminDept.Manager ITDept.Manager

Class SamsungTelevision 命名空间 6-3 namespace Sony { class Television ... } class WalkMan namespace Samsung { class Television ... } class WalkMan Class SamsungTelevision { } Class SonyTelevision { } 长名称难以维护 Class SonyWalkman { } Class SamsungWalkman { } 有条理,有结构 Samsung.Television Sony.Television

命名空间 6-4 语法 namespace 命名空间的名称 { // 该名称空间的所有类都放在这里。 }

命名空间 6-5 namespace Samsung { class Monitor public void ListModels() Console.WriteLine(“供应以下型号的显示器:"); Console.WriteLine("14\", 15\" \n"); } [STAThread] static void Main(string[] args) // // TODO: 在此处添加代码以启动应用程序

命名空间 6-6 namespace Sony { public class Monitor public void ListModelStocks() Console.WriteLine(“以下是 Sony 显示器的规格及其库存量:"); Console.WriteLine("14\"=1000, 15\"=2000, 17\"=3000"); } static void Main(string[] args) Samsung.Monitor objSamsung = new Samsung.Monitor(); Monitor objSony = new Monitor(); objSamsung.ListModels(); objSony.ListModelStocks(); 命名空间 6-6

总结 类是 C# 中的一种结构,用于在程序中模拟现实生活的对象 成员变量表示对象的特征 方法表示对象可执行的操作 如果类中未定义构造函数,则由运行库提供默认构造函数 析构函数不能重载,并且每个类只能有一个析构函数 可以根据不同数量的参数或不同数据类型参数对方法进行重载,不能根据返回值进行方法重载 命名空间用来界定类所属的范围,类似于Java中的包