在 C 中实现 OOP 概念_第1页
在 C 中实现 OOP 概念_第2页
在 C 中实现 OOP 概念_第3页
在 C 中实现 OOP 概念_第4页
在 C 中实现 OOP 概念_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章在C#中实现OOP概念Net框架图2一个简单的windows应用程序设计一个小游戏,要求能通过上下左右4个按钮的点击动作,使得中间的小黑块能向相应的方向移动。3回顾C#提供以下类型的选择结构:ifif…elseswitch…caseC#提供以下类型的循环结构:while

循环do

循环for

循环foreach

循环4回顾数组是可用于将类型相同的多个数据元素存储为一个实体的数据结构5目标理解C#

的类和对象使用

C#

构造函数和析构函数使用C#

访问修饰符使用方法理解命名空间6对象属性型号价格里程行为起动停车行驶属性车轮数量档的数量行为加速换档刹车属性名称颜色品种行为摇尾巴吃东西犬吠7类类是C#

中的一种结构,用于在程序中模拟现实生活的事物语法:[访问修饰符]class<类名>{//类的主体}示例:classEmployee{//类的主体}//成员变量//成员方法8语法:成员变量[访问修饰符]数据类型成员变量;privateprotectedinternalpublic_namestatus….userNameintchar….bool…classEmployee{ privatestring_name; privatechar_gender; privatestring_qualification; privateuint_salary;}…访问成员变量步骤1:创建一个类的对象EmployeeobjEmployee=newEmployee();步骤2:使用点号访问成员变量objEmployee._name=“张三";objEmployee._name='M';9访问修饰符2-1Teacher类private

成员protected成员public成员internal

成员Student类只有Student类在Teacher类都在同一程序集中,才可访问internal成员不可访问不可访问可以访问10访问修饰符2-2修饰符说明public所属类的成员以及非所属类的成员都可以访问internal当前程序集可以访问private只有所属类的成员才能访问protected所属类或派生自所属类的类型可以访问11构造函数2-1构造函数是类的一种特殊方法,每次创建类的实例都会调用它[访问修饰符]<类名>(){//构造函数的主体}语法:…//默认构造函数Employee(){ _qualification="研究生"; }…示例:12演示:示例1构造函数2-2classEmployee{

privatestring_name;privatechar_gender;privatestring_qualification;privateuint_salary;

//默认构造函数

privateEmployee()

{_qualification=“研究生";

}

staticvoidMain(string[]args)

{ //调用默认构造函数

EmployeeobjEmployee=newEmployee();

Console.WriteLine(“资格=" +objEmployee._qualification);

Console.WriteLine(“薪水=" +objEmployee._salary);

}}13参数化构造函数2-1[访问修饰符]<类名>(){//构造函数的主体}语法:([参数列表])…//参数化构造函数Employee(stringstrQualification){_qualification=strQualification; }…示例:14参数化构造函数2-2//默认构造函数privateEmployee(){_qualification=“研究生";}//参数化构造函数privateEmployee(stringstrQualification,stringstrName,chargender,uint

empSalary){_qualification=strQualification;_name=strName;_gender=gender;_salary=empSalary;}publicstaticvoidMain(string[]args){//调用默认构造函数

EmployeeobjGraduate=newEmployee();//调用参数化构造函数

EmployeeobjMBA=newEmployee(“ACCPS3“,”张亮影“,‘男',5500);

Console.WriteLine(“默认构造函数输出:\n资格=“+objGraduate._qualification);

Console.WriteLine(“\n参数化构造函数输出:\n资格="+objMBA._qualification);}15析构函数是用于执行清除操作的特殊方法~<类名>()0//不能加参数!!{//析构函数的主体}语法:…~Employee(){

}…示例:16方法对象的行为接听响铃挂断PickUp(){….//用于传送和接收信号的代码}Ring(){….//用于显示主叫号码的代码}Hang(){….//用于结束会话的代码}17声明方法2-1语法访问修饰符(可选),默认情况下为

private[访问修饰符]返回类型<方法名>([参数列表]){//方法主体}如果不需要返回任何值,方法可能返回void

数据类型18声明方法2-2…..classPoint{

intx;

inty; voidAssign() {

System.Console.WriteLine(“输入点的值"); x=int.Parse(System.Console.ReadLine());

y=int.Parse(System.Console.ReadLine());

}}…..方法Assign()

的定义

不返回任何值(void)

不接收任何值(Assign())Assign()方法19调用方法3-1语法对象名.方法名([参数列表]);实例类中的方法点号20演示:示例3调用方法

3-2

privatevoidAccept() {

Console.WriteLine(“请输入实数部分"); _real=int.Parse(Console.ReadLine());

Console.WriteLine(“请输入虚数部分"); _imaginary=int.Parse(Console.ReadLine()); }

voidShowResult() {

Console.WriteLine(“相加之和为:");

Console.WriteLine(_real+"+"+_imaginary+"i"); }

//此方法用于将两个复数相加

ComplexNumber

Add(ComplexNumberobjParam1) { objParam1._real+=_real; objParam1._imaginary+=_imaginary; returnobjParam1; }接收实部和虚部的值显示实部和虚部的值请参阅对象的实例变量objParam1

objNumber2

相关联[STAThread]publicstaticvoidMain(string[]args){

ComplexNumberobjNumber1=newComplexNumber();

ComplexNumberobjNumber2=newComplexNumber();objNumber1.Accept();objNumber2.Accept();

ComplexNumber

objTemp=objNumber1.Add(objNumber2);

objTemp.ShowResult(); }21调用方法3-3语法return[表达式];return

语句

22方法重载4-1消费者

1固定电话电移动电话帐单管理层供应商1供应商2电信电电话电对不同的数据执行相同的任务23方法重载4-2…ClassBillPayment{ … voidPayBill(int

telephoneNumber) { //此方法用于支付固定电话话费 } voidPayBill(long

consumerNumber) { //此方法用于支付电费 } voidPayBill(long

consumerNumber,doubleamount) { //此方法用于支付移动电话话费 } …}…对不同数据执行相似的功能24方法重载4-3int

greatest(intnum1,intnum2){ Console.WriteLine(“{0}和

{1}相比,最大的是:",num1,num2); if(num1>num2)

{ returnnum1;

} else

{ returnnum2;

}}int

greatest(intnum1,intnum2,intnum3){ Console.WriteLine(“{0},{1}和{2}相比,最大的是:",num1,num2,num3); if(num1>num2&&num1>num3)

{ returnnum1;

} elseif(num2>num1&&num2>num3)

{ returnnum2;

} else

{ returnnum3;

}}具有不同数量的参数的方法重载25方法重载4-4int

greatest(int[]numbers){

inttemp=numbers[0];

for(inti=1;i<numbers.Length;i++) {

if(temp<numbers[i])

temp=numbers[i]; }

returntemp;}doublegreatest(double[]numbers){doubletemp=numbers[0];

for(inti=1;i<numbers.Length;i++) {

if(temp<numbers[i])

temp=numbers[i]; }

returntemp;}具有不同类型的参数的方法重载26命名空间6-1

英国澳大利亚纽卡斯尔纽卡斯尔27命名空间6-2ClassManager{longintsalary;………………}…….…….{longintsalary;…….………}ClassManager命名空间AdminDept命名空间ITDeptAdminDept.ManagerITDept.Manager类库28命名空间6-3ClassSamsungTelevision{}ClassSonyWalkman{}ClassSonyTelevision{}ClassSamsungWalkman{}长名称难以维护namespaceSamsung{

classTelevision{...}

class

WalkMan{...}}Samsung.TelevisionSony.TelevisionnamespaceSony{

classTelevision{...}

class

WalkMan{...}}有条理,有结构29命名空间6-4namespace

命名空间的名称{

//该名称空间的所有类都放在这里。}语法30命名空间6-5namespaceSamsung{ classMonitor { publicvoidListModels() {

Console.WriteLine(“供应以下型号的显示器:"); Console.WriteLine("14\",15\"\n"); } [STAThread

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论