大庆师范学院.NET课题组海纳百川1ASP.NETWeb开发之C#篇第三章面向对象编程基础大庆师范学院.NET课题组海纳百川2第三章面向对象编程基础•3.0类和对象•3.1类的属性•3.2类的封装•3.3继承•3.4多态•3.5对象数组大庆师范学院.NET课题组海纳百川3内容和目标面象对像,实例驱动面向对象的三个特征:封装、继承、多态内容提要实现创建一个类,定义属性和方法能创建一个对象,访问其的属性和方法能定义一个类的属性和方法并通过类名访问它们3大庆师范学院.NET课题组海纳百川4面向对象现实世界概念世界计算机世界反映逻辑世界抽象转换大庆师范学院.NET课题组海纳百川53.0类和对象•类:具有相同特征事物的集合,是抽象的表示。•对象:对象是类中的一个实例,是具体事物的描述。•类:从程序员的角度看,类是一种自定义的数据结构。和结构体相比,它是不但含有属性,而且具有方法。★邵老师的思考:•我们也可以将类看成是一个箱子,箱子有名字(类名),箱子里有属性(变量)和方法(函数)。大庆师范学院.NET课题组海纳百川6人类的逻辑世界•举个例子:•人类:•{•身份证号;•生日;•年龄;•睡觉;•走路;•吃饭;•}大庆师范学院.NET课题组海纳百川7计算机世界•publicclassPerson•{stringPersonID;•intage;•DateTimebirth;•publicvoidsleep()•{•}•publicstringeat(stringfood)•{•}•privatevoidwalk()•{•}•}大庆师范学院.NET课题组海纳百川8类的定义格式•类修饰符class类名:基类名•{•属性修饰符属性类型属性名;•方法修饰符方法返回值|void方法名(参数列表)•{•方法体;•}•}类名首字母一般大写大庆师范学院.NET课题组海纳百川9对象的定义格式•类名对象名=new类名(参数列表);•对象成员的访问:•对象名.成员名例如:•Personp1=newPerson();•p1.age=21;•p1.mj();大庆师范学院.NET课题组海纳百川10VS2005中创建类和创建对象访问类首先是创建类•网站添加新项选择“类”,名称Person.cs弹出对话框选“是”在网站的“App_Code”文件夹内就出现一个Person.cs的文件。创建对象访问类•创建类和对象.aspx,添加按钮,在按钮的Click事件中添加代码:大庆师范学院.NET课题组海纳百川11•Personp1=newPerson();•p1.age=20;•p1.birth=System.DateTime.Now;•Response.Write(p1.age+br);Response.Write(p1.birth+br);Response.Write(hello+p1.PersonID+hello);运行,为什么会出错?解决方案:属性的类型应该为public类的外部才能访问。大庆师范学院.NET课题组海纳百川12类的内部和外部类的内部:•类名后大括弧之间的部分类的外部:•类的内部以外的任何地方。•类的内部方法可以引用类的任何属性。大庆师范学院.NET课题组海纳百川13类修饰符•(1)访问修饰符(4个)•public•private•Protected•internal定义内部类型。•(2)类修饰符(2个)•abstract用于修饰抽象类;•sealed用于修饰最终类。返回目录大庆师范学院.NET课题组海纳百川14练习:定义一个长方形类并定义对象访问它定义一个圆形类并定义对象访问它大庆师范学院.NET课题组海纳百川15长方形类•长方形类:•{•宽;•长;•周长;•面积;•}大庆师范学院.NET课题组海纳百川16圆形类•圆形类:•{•半径;•圆周率(π);•周长;•面积;•}大庆师范学院.NET课题组海纳百川173.1类的属性属性的构成•[属性修饰符]属性类型属性名;属性分为两类:•对象的属性—创建对象,用对象名访问•类的属性—不创建对象,用类名直接访问类属性的定义:•staticintcount;返回目录对象属性的定义:intcount;•类的属性是所有对象共享的属性•(和具体某个对象无关)大庆师范学院.NET课题组海纳百川18对象属性和类属性的例子•对象的ID属性自动生成大庆师范学院.NET课题组海纳百川193.2类的封装•类中对象的属性的访问修饰符一般应该为private类型。•类的封装的实现:•通过共有方法实现对私有成员的访问,而非直接访问私有成员。大庆师范学院.NET课题组海纳百川20构造函数•函数名与类名同名•无返回值,而且连void也不需要•系统创建对象时(new)自动调用,一般不显式调用•构造函数也可以重载•构造函数的作用是:初始化成员变量大庆师范学院.NET课题组海纳百川21析构函数•函数名与类名同名,并在类名前加~•析构函数的作用是:收尾工作•比如:关闭连接大庆师范学院.NET课题组海纳百川22析构函数与构造函数的例子大庆师范学院.NET课题组海纳百川23怎样判断连接是否已经打开?•百度:•第八项:关于SqlConnection的重复打开和关闭_阿凡提之家•if(conn.State=ConnectionState.Closed)//打开{conn.Open();}•if(conn.State=ConnectionState.Open)//关闭{conn.Close();}sqlconnection是否已经打开大庆师范学院.NET课题组海纳百川253.3继承定义两个类:Shape类和Circle类父类和子类在现实社会中的关系:•子类是父类的一种,父类包含子类。子类对父类的继承:•子类可以继承父类的public和protected成员•子类可以定义自己的成员和方法•子类可以定义和父类同名的函数父类和子类都有GetArea()时,子类对象调用的是自己的还是父类的GetArea()呢?举例说明之大庆师范学院.NET课题组海纳百川263.3继承定义两个类:Person类和Student类Student类中有grade和classbj两个新属性,还有Read()和Write()两个动作。奥运选拔志愿者,参数是Person类型,大庆师范学院.NET课题组海纳百川273.4多态多态:•同一操作作用于不同类的实例,这些类进行不同的解释,从而产生不同的结果。多态的两种形式•编译时多态:重载•运行时多态:虚成员方式实现大庆师范学院.NET课题组海纳百川28Shape类Circle类Sphere类Cylinder类大庆师范学院.NET课题组海纳百川29Shape类•publicclassShape•{•protecteddoublex,y;•publicShape()•{•}•publicvirtualdoubleGetArea()•{•System.Web.HttpContext.Current.Response.Write(shape'sGetArea());•returnx*y;•}•}大庆师范学院.NET课题组海纳百川303.5对象数组•SQLServer安装时选择本地用户,而不选择域用户;•身份认证选择混合身份认证而不选择Windows集成身份认证。(一般将用户sa的密码也设置为sa)•VisualStudio安装时需要选择自定义,去掉不常用的VB,J#,VisualC++,只保留C#。大庆师范学院.NET课题组海纳百川31总结•问题:•Windows应用程序和Web应用程序的主要区别是什么?•参考答案:•Windows应用程序一般生成exe程序,双击执行,客户端一般需要安装后才能执行。•Web应用程序一般存放在服务器上,客户端需要启动浏览器运行,需要输入网址。大庆师范学院.NET课题组海纳百川32第一章回顾•1、和.NET搭配的数据库管理系统是?•SQLServer•2、.NET常见的三种应用程序是、、•?•控制台应用程序、Windows应用程序和Web应用程序3、运行ASP.NET程序需要的两个必备条件是•和?•IIS和FrameWork(类库,相当于C语言的函数库)