版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象编程基础(jīchǔ)第一页,共60页。面向对象编程简述(jiǎnshù)软件开发领域两种开发方法:面向过程(guòchéng)面向对象 面向对象概念的出现,是程序设计领域的一个重大进步.
第二页,共60页。我们可以形象的把对象看成一块积木. 积木的设计者需要设计积木的外观,形状及材质,而使用者只需要根据(gēnjù)外观与形状进行堆放就可以了.第三页,共60页。优点(yōudiǎn):可维护性复用性扩展性灵活性第四页,共60页。面向对象开发中两种身份:设计者,使用者. 实际上,我们现在很多的软件开发都是一种组件(zǔjiàn)化开发,在前人的工作基础上添砖加瓦.如:Convert.ToInt32()
第五页,共60页。returnmyInt;Console.voidMove(doublea,doubleb)//设置属性的错码练习(liànxí):second=0;returnrotateSpeed*2*3600/1000;一个Show方法,将宠物当前状态显示出来.publicTime(inth,intm)publicstringcolor;}WriteLine("我叫{0}我{1}岁了",name,age);bombNumber);//.我们可以形象的把对象看成一块积木.voidMove(doublea,doubleb) 当程序规模(guīmó)庞大到一定程度后,需要对其使用面向对象的方法分层设计,使能够进行大批量的同步开发。
第六页,共60页。对象(duìxiàng)具体的事物,一般具有属性与行为。汽车:属性:型号、颜色(yánsè)行为:启动、加速、刹车第七页,共60页。鸡:属性(shǔxìng):品种、重量、毛色行为:叫、吃东西、下蛋第八页,共60页。在现实生活中,人们都是习惯以对象为单位,来研究其性质、行为以及其与其他对象之间的关系(guānxì)同样,在程序中使用对象的概念,就可以将一个程序看成是很多对象相互作用的结果。第九页,共60页。几个(jǐɡè)关键词封装继承(jìchéng)接口第十页,共60页。封装 例如看电视,我们通过遥控器就能控制它,并不需要知道电视是怎么搜索频道、接收(jiēshōu)信号等工作,按下按钮,就能换到另一个频道。我们只是把电视当作一个供我们娱乐的对象,我们只要知道怎么用就行了。第十一页,共60页。继承(jìchéng)电视机从出现到不断发展,从黑白到彩色,到高清,不管怎么变化,它们(tāmen)都有共同的特征:声音,图像。这在面向对象的理论中就是继承第十二页,共60页。同样,在程序中使用对象的概念,就可以将一个程序看成是很多对象相互作用的结果。4创建一个类Student,有姓名,语文(yǔwén),数学,英语四个字段.//静态构造函数this.WriteLine("车长:{0}",length);第二十二页,共60页。publicTime(inth,intm)属性(shǔxìng):品种、重量、毛色WriteLine("我叫{0}我{1}岁了",name,age);在set函数中,可以使用关键字value引用用户提供的属性值第四十三页,共60页。这在面向对象的理论中就是继承第四十九页,共60页。publicclassBankCustomer面向对象编程基础(jīchǔ)classIPhone4多态多种形式或多种形态,同一操作对于不同(bùtónɡ)的对象可以有不同(bùtónɡ)的解释。第十三页,共60页。类与对象(duìxiàng)的关系初学者往往混淆类和对象的概念,实际上它们之间是蓝图和产品的关系,类就是一张蓝图,它规定了对象有哪些特征,而对象是根据这张蓝图生产的产品。从同一个类产生出来的对象,它们具有(jùyǒu)样的结构,却可能在某些特性上有不同之处。第十四页,共60页。类与对象(duìxiàng)的UML表示第十五页,共60页。类类定义了一个“模板(múbǎn)”,通过这个“模板(múbǎn)”可以生成一个或多个对象类定义了一个对象的状态和行为publicclassStudent{//姓名,年龄...//...//入学,考试,实习,退学...}第十六页,共60页。类是C#中的一种结构,用于在程序中模拟现实生活中的事物基本语法:[访问修饰]class<类名(lèimínɡ)>{//类的成员}第十七页,共60页。第十八页,共60页。实例(shílì)化实例(shílì)化就是创建对象的过程使用new关键字来创建classProgram{staticvoidMain(string[]args){Treea=newTree();Treeb=newTree();
}}classTree{
}第十九页,共60页。类成员(chéngyuán)的定义类成员包括字段、方法(fāngfǎ)和属性。所有成员都有自己的访问级别第二十页,共60页。定义(dìngyì)字段类所包含的数据字段用标准(biāozhǔn)的变量声明格式和修饰符来声明(可以进行初始化)如:classStudent{ publicstringname;publicintage;}第二十一页,共60页。classProgram{staticvoidMain(string[]args){Studenta=newStudent();="刘伟";a.age=19;
Console.WriteLine();Console.WriteLine(a.age);Console.ReadKey();
}}第二十二页,共60页。字段与方法(fāngfǎ)的访问修饰符public:在任何地方访问,不受限制internal:访问仅限于当前程序集private:访问仅限于包含类型(默认(mòrèn))protected:访问仅限于包含类或从包含类派生的类型protectedinternal:访问仅限于从包含类派生的当前程序集或类型第二十三页,共60页。第二十四页,共60页。定义方法方法指所具有(jùyǒu)的行为,用函数的形式进行表达.第二十五页,共60页。classStudent{publicstringname;publicintage;publicvoidShow(){Console.WriteLine("我叫{0},我{1}岁了",name,age);}publicvoidRun(){Console.WriteLine("{0}正在(zhèngzài)跑步中......",name);}}第二十六页,共60页。classProgram{staticvoidMain(string[]args){Studenta=newStudent();="刘伟";a.age=19;a.Show();a.Run();Console.ReadKey();}}第二十七页,共60页。练习(liànxí):1.创建一个类Point,表示一个点.有两个double字段,分别表示x,y坐标.三个方法voidMove(doublea,doubleb)用于将该点在x轴上平移a,在y轴上平移b.voidShow()显示该点当前的坐标.doubleOriginDistance();计算该点与原点的距离。在主函数中创建一个点,设置坐标值后显示,平移,然后(ránhòu)再显示.最后计算该点与原点的距离.第二十八页,共60页。2.创建一个Frog类,一个字段:stringname;青蛙的名字intdistance;表示青蛙跳过的距离.一个方法:voidJump()青蛙跳(一个10到20间的随机数) 在主函数(hánshù)中创建两个青蛙,让它们各跳10次后,宣布比赛结果.第二十九页,共60页。3猜数字游戏:创建一个类A一个成员变量(字段)intx;指要猜的数(1-100)一个方法:boolguess(intx):用于对字段x进行猜测.如果大了则提示大了,小了则提示小了,等于则提示猜测成功。 在主函数中创建一个A类对象,随机设置(shèzhì)x字段的值,并让用户猜测,一直到猜中为止.第三十页,共60页。4创建一个类Student,有姓名,语文(yǔwén),数学,英语四个字段.一个计算平均分的方法.(有结果返回) 在主函数中创建二个学生,给各个字段赋值,计算平均分并显示出来.第三十一页,共60页。5.创建一个Pet类,有昵称(string),饥饿值(int),清洁值(int)三个字段,有feed和Bath方法,每次喂食(wèishí)增加5个饥饿值,每次洗澡增加3点清洁值.一个Show方法,将宠物当前状态显示出来.在主函数中创建一个宠物,设置三个字段,喂几次,洗几次澡,显示宠物当前状态.第三十二页,共60页。属性(shǔxìng)为了实现良好的数据封装和数据隐藏(yǐncáng),类的字段成员的访问属性一般设置成private或protected,这样在类的外部就不能直接读写这些字段成员了,通常的办法是提供public级的方法来访问私有的或受保护的字段。第三十三页,共60页。定义(dìngyì)属性属性拥有两个类似于函数的块,一个块用于获取属性的值,另一个用于设置属性的值。
这两个块也称为访问器,分别用get和set来定义(dìngyì)。可以只写一个来创建只读或只写属性。第三十四页,共60页。public<类型名>属性名{ get { //获取属性的代码(dàimǎ) } set { //设置属性的错码 }}在set函数中,可以使用关键字value引用用户提供的属性值第三十五页,共60页。classTest{privateintmyInt;publicintMyIntProp{get{returnmyInt;}set{myInt=value;}}}第三十六页,共60页。classCar{privatedoublerotateSpeed;publicdoubleSpeed{get{Console.WriteLine("当前车轮(chēlún)转速是{0}转/每秒,车速据此计算得出",rotateSpeed);returnrotateSpeed*2*3600/1000;}set{rotateSpeed=value*1000/3600/2;Console.WriteLine("根据车速设车轮(chēlún)转速为{0}转/每秒",rotateSpeed);}}}第三十七页,共60页。publicclassBankCustomer{publicstringName;publicdecimalBalance;publicvoidDeposit(decimalamount){this.Balance+=amount;}}BankCustomerc;c=newBankCustomer();c.Name="张三(zhānɡsān)";c.Balance=0.0M;c.Deposit(1000.0M);Console.Write(c.Balance);Console.ReadLine();第三十八页,共60页。构造函数C#提供了对对象进行初始化的方法,这就是(jiùshì)构造函数。构造函数是类的一种特殊方法,在每次创建类的实例时都会调用它。一般构造函数进行对象数据的初始化。第三十九页,共60页。访问修饰符<类名(lèimínɡ)>(){ //构造函数的主体}第四十页,共60页。构造函数总是和类同名构造函数没有任何(rènhé)返回值,也无需加void不能显示的调用构造函数每个类都有一个构造函数,如果代码中没有构造函数,系统会自动的为该类提供一个默认的构造函数。构造函数的修饰符如为private会阻止其实例化第四十一页,共60页。classPlane{publicstringcolor;publicintweaponLevel;publicintbombNumber;publicPlane(){color="red";weaponLevel=1;bombNumber=3;Console.WriteLine("新飞机(fēijī)构造完毕");}}第四十二页,共60页。classProgram{
staticvoidMain(string[]args){Planea=newPlane();Console.WriteLine(a.color);Console.WriteLine(a.weaponLevel);Console.WriteLine(a.bombNumber);Console.ReadLine();}}第四十三页,共60页。默认构造函数对非静态成员进行初始化(1)数值型初始化为0(2)bool型初始化为false(3)引用类型(lèixíng)初始化为null 如果自己定义了构造函数,则所有的初始化工作由程序员自己完成。第四十四页,共60页。重载(zhònɡzǎi)构造函数构造函数可以(kěyǐ)有参数,并可以(kěyǐ)重载。第四十五页,共60页。【例3.2】Time类的构造函数及其重载(zhònɡzǎi)。usingSystem;publicclassTime{ privateinthour,minute,second; publicTime() { hour=minute=second=0; } publicTime(inth) { hour=h; minute=second=0; } publicTime(inth,intm) { hour=h; minute=m; second=0; }第四十六页,共60页。 publicTime(inth,intm,ints) { hour=h; minute=m; second=s; }}classTest{ staticvoidMain() { Timet1,t2,t3,t4;//对t1,t2,t3,t4分别(fēnbié)调用不同的构造函数 t1=newTime(); t2=newTime(8); t3=newTime(8,30); t4=newTime(8,30,30); }}第四十七页,共60页。析构函数(hánshù)用于执行清除(qīngchú)操作的特殊的方法~<类名>(){}第四十八页,共60页。只读字段用readonly修饰只能(zhīnénɡ)在声明或构造函数中对只读字段进行赋值。第四十九页,共60页。静态(jìngtài)成员与实例成员 前面我们(wǒmen)谈到的字段、属性与方法是对象实例所特有的,此外还有静态成员。 静态成员不属于任何对象,独立于任何对象实例。
静态成员使用static关键字进行定义。第五十页,共60页。classIPhone4{publicstringcolor;staticpublicdecimaldesignFee;
}第五十一页,共60页。classHuman{//两个(liǎnɡɡè)实例字段publicintage;publicstringname;//两个(liǎnɡɡè)静态字段staticpublicinthistory;staticpublicintnumber;}第五十二页,共60页。静态字段只在内存(nèicún)中存储一次第五十三页,共60页。classHuman{//…//一个实例方法publicvoidDisPlay(){Console.WriteLine("我叫{0}我{1}岁了",name,age);}//一个静态方法staticpublicvoidIntroduce(){Console.WriteLine("人类是地球上最聪明的生物(shēngwù),有{0}年的历史,现在有{1}人",history,number);}}第五十四页,共60页。对于(duìyú)静态方法与字段,我们没有必要对其进行new实例化,直接调用即可.第五十五页,共60页。静态方法不能访问实例数据或其他(qítā)实例方法.第五十六页,共60页。静态(jìngtài)构造函数用于初始化静态数据,或用于执行仅需执行一次的特定(tèdìng)操作,在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数static<类名>(){}静态构造函数不能使用访问修饰符,也不能使用参数.第五十七页,共60页。//静态构造函数staticHuman(){history=5000;number=0;Console.WriteLine("人类初始数据设置(shèzhì)完毕");}//构造函数publicHuman(){age=0;name="未命名";number++;Console.WriteLine("新人已经造出");}第五十八页,共60页。classBMW320i{publicstaticstringengine;publicstaticintlength;publicstaticintcarNumber;publicstaticintwarrantyYears;
publicstringcolo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 折射计产业运行及前景预测报告
- 打浆机产业规划专项研究报告
- 书写用空白日记本产业规划专项研究报告
- 冰球杆包产业运行及前景预测报告
- 建筑行业人才梯队培养方案
- 器官疗法制剂产业规划专项研究报告
- 卡车维修与保养综合方案
- 高压气体管道顶管施工方案
- 农业灌溉土壤改良协议书
- 粉煤灰利用技术支持与服务方案
- 2023年湖南长沙环境保护职业技术学院专任教师招聘考试真题
- 第七章 立体几何与空间向量综合测试卷(新高考专用)(教师版) 2025年高考数学一轮复习专练(新高考专用)
- 2024年普通考研-学校体育学考试近5年真题集锦(频考类试题)带答案
- 生产流程(线)外包服务规范 -DB13-T 5224-2020 河北
- 矿山转让合同15篇
- 【互联网金融发展的监管探究国内外文献综述5100字】
- 部编人教版道德与法治一年级上册:6校园里的号令教学设计(2课时)
- (新版)云南水利安全员(B证)考试题及答案
- 劳动关系协调员测试题及答案
- 三秦思语(2022年陕西中考语文试卷散文阅读题及答案)
- 贵州省建筑与装饰工程计价定额(2016版)
评论
0/150
提交评论