面向对象初级

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第5章面向对象的程序设计概念一、面向对象的基本概念抽象;封装;继承;多态。面向对象程序设计的基本特征:对象与类简单地说:对象是表示现实世界中某个具体的事物;类是对对象的抽象描述。张三类(CLASS)如:“manclass”对对象进行抽象为类对类进行实例化•对象(object)•我们可以把生活所在的真实世界(RealWorld)当作是由许多大小不同的对象所组成的。对象可以是有生命的个体,比如一个人或一只鸟。对象•对象也可以是无生命的个体,比如一辆汽车或一台计算机。•对象也可以是一件抽象的概念,如天气的变化或鼠标所产生的事件。对象(object)计算机世界中的对象是把数据及其相关的操作封装在一起所构成的实体。封装的实体=数据+方法(行为)数据:属性或状态方法:作用于数据上的操作封装:属性的访问和变化通过方法完成对象的特征•对象有两个特征:状态(state)和行为(behavior)。例如:一个人有他的身高或体重作状态,并有他的行为——如唱歌、打球、骑摩托车、开汽车。一只狗有它的颜色作状态,也有它的行为,如吠叫或跳跃。•而在程序设计中,软件对象的概念由真实世界对象而来。对象的概念是面向对象软件对象将状态保存在变量(variables)或称数据字段(datafield)里。而行为则借助方法(methods)为工具来实现。datafield1datafieldnmethod1methodn数据字段(状态)方法(行为)软件对象的定义•我们可以对软件对象作以下的定义——datafield1datafieldnmethod1methodn私用数据细节公用方法定义:对象是由数据字段(变量)及相关方法所组成的软件包汽车对象•以汽车为例,我们可定义其状态与方法如:换档开大灯刹车开冷气颜色排档数排气量轮胎型号通过换档(方法)改变当前档位(属性)当前档位面向对象设计思想1、抽象:是从特定的对象(实例)中抽取共同的性质以形成类(一般化概念)的过程。二、类(class)的概念类:是一种抽象的数据类型,它是所有具有一定共性的对象的抽象。本质上可以认为是对对象的描述,使创建对象的“模板”。类的某一个对象则被称为是类的一个实例,是类的实例化结果。对象类实例化抽象类(class)•在真实世界里,有许多同“种类”的对象。而这些同“种类”的对象可被归类为一个“类”。•例如我们可将世界上所有的汽车归类为汽车类,所有的动物归为动物类。动物类汽车类实例(instance)•汽车类有些共同的状态(汽缸排气量,排档数,颜色,轮胎数……)和行为(换档,开灯,开冷气……),但每一台汽车个别的状态及方法可不同于且独立于其他汽车。•你的汽车只是这世界中许多汽车中的一个。我们就称你的汽车对象是汽车类中的一个实例(instance)。汽车类class)实例instance)NEW你的车方法(method)方法–是对象的行为方式(操作)–对象与外界的接口作用–改变对象的属性–返回对象的属性object1object2面向对象方法的主要优点与人类习惯的思维方法一致可重用性可扩展性可管理性三、定义类[修饰符]class类名[extends父类][implements接口名]{类成员变量声明;类方法声明;}任务5-1——定义类publicclassStudent{Stringname;intNo;Stringdorm;Stringtel;voidcheckIn(Stringa,intb){name=a;No=b;}voidassignDorm(Stringa){dorm=a;}voidprovideTel(Stringb){tel=b;}}四、对象的定义[修饰符]类名对象名=new类名(实参列表);或[修饰符]类名对象名;对象名=new类名(实参列表);创建对象类名对象名;Studentzhang;注意:类属于复合数据类型,因此,在声明对象时,系统并没有为对象分配空间,用户需要应用new完成分配空间的任务。zhang=newStudent();与数组的对比性intscore[];score=newint[10];合二为一:Studentzhang=newStudent();对象的引用引用成员变量对象名.成员变量名引用方法对象名.方法名(参数列表)【任务5-2】使用Student类publicclassTermBegins{publicstaticvoidmain(String[]args){Studentzhang;zhang=newStudent();zhang.checkIn(张三,001);zhang.assignDorm(A-101);zhang.provideTel(13012345678);System.out.println(姓名:+zhang.name);System.out.println(学号:+zhang.No);System.out.println(宿舍:+zhang.dorm);System.out.println(联系电话:+zhang.tel);}}姓名:张三学号:1宿舍:A-101联系电话:13012345678演示•定义一个cube类,代表一个立方体•包含的属性有:长、宽、高,分别保存在变量x,y,z里面•方法有:求表面积•求体积•在main函数里定义一个cube类对象a,并设置立方体a的长宽高分别为3,4,5,并求出立方体a的表面积和体积打印出来。上机作业1•设计一个交通工具Vehicle,属性包括•最大速度speed、颜色color、类别kind、•方法包括设置速度,颜色,类别,取得速度。颜色,类别•创建Vehicle对象,并为其设置新最大速度和颜色和类别,并显示其最大速度、颜色、类别上机作业2(1)编写一个位置类Position,包含两个成员变量:横坐标x,纵坐标y;一个方法:printInfo,打印出横坐标和纵坐标;(2)编写Position类的测试程序,创建一个点类的对象a,横坐标、纵坐标分别为3,4,要求输出点a的相关信息;举例:汽车的例子packagech5.week2;publicclassCar{intspeed;Stringcolor;Stringno;voiddrive(inta){speed=speed+a;}voidprint(){System.out.println(speed=+speed);System.out.println(color=+color);System.out.println(no=+no);}voidchangeColor(StringaColor){color=aColor;}voidchangeNo(StringaNo){no=aNo;}}packagech5.week2;publicclassCube{//与main方法平行的地方写cube的属性和方法intx,y,z;intarea(){inttmp=2*(x*y+y*z+z*x);returntmp;}intvolumn(){inttmp=x*y*z;returntmp;}publicstaticvoidmain(String[]args){Cubeb1=newCube();b1.x=3;b1.y=4;b1.z=5;System.out.println(表面积+b1.area());System.out.println(体积+b1.volumn());}}举例:立方体的例子packagech5.week2;publicclassDog{intage;Stringname;floatweight;booleanisHungry;voidgrow(){age=age+1;}voideat(floatfoodWeight){weight=weight+foodWeight;}}举例:小狗的例子测试各种类的程序packagech5.week2;publicclasstest{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub//dog//car/*CarmyCar=newCar();//组装新车myCar.color=red;myCar.no=gz9090;myCar.speed=0;myCar.print();//改装车myCar.drive(40);myCar.changeColor(blue);myCar.changeNo(888888);myCar.print();CaryourCar=newCar();//组装新车yourCar.color=green;yourCar.no=gz9091;yourCar.speed=0;yourCar.print();//改装车yourCar.drive(40);yourCar.changeColor(yellow);yourCar.changeNo(888886);yourCar.print();CarsheCar=newCar();CaraBoyCar=sheCar;*/Dogdog1;dog1=newDog();dog1.name=tom;dog1.age=2;dog1.weight=2;dog1.eat(0.5f);System.out.print(dog1体重+dog1.weight);Dogdog2=newDog();dog2.name=jack;dog2.age=2;dog2.grow();System.out.println(dog2年龄+dog2.age);}}•第三周课5.1.4类的构造函数•【任务5-3】为Student类定义构造方法。publicclassStudent{Stringname;intNo;Stringdorm;Stringtel;Student(StringaName,intaNo){name=aName;No=aNo;}voidassignDorm(Stringa){dorm=a;}voidprovideTel(Stringb){tel=b;}publicstaticvoidmain(String[]args){Studentzhang=newStudent(张三,001);zhang.assignDorm(A-101);zhang.provideTel(13012345678);}}【任务5-4】为Student类定义多个构造方法。源代码在备注中5.2封装性•封装的定义包括下面几个方面:•(1)一个清晰的边界,所有对象的内部软件范围限定在这个边界之内。•(2)一个接口,该接口描述当前对象和其他对象之间的交互作用。•(3)内部实现,对象内部的实现是受保护的,这个实现给出了软件对象功能的细节,定义当前对象的类的外面不能访问这些实现细节。•5.2.1类变量和类方法对象的初始化类中包含有成员变量和方法,当使用类声明并创建对象时,使用new关键字,这时系统为对象创建自己的内存区域并自动调用构造方法初始化成员变量。构造方法构造方法是一个特殊的成员方法,它与类名相同。在创建对象空间后,系统自动根据参数调用相应的构造函数。构造函数的主要功能是为数据成员赋初值。构造方法的特点构造方法名与类名相同;构造方法没有返回类型,也不是void;构造方法的主要作用是对类对象的初始化。如果没有定义构造方法时,成员变量将被初始化为各种类型的默认值;构造方法只能与new关键字初始化对象时使用,其他时候不能使用;一个类可以定义多个构造方法,根据参数的不同决定执行哪一个。publicclassStudent{Stringname;intNo;Stringdorm;Stringtel;Student(StringaName,intaNo){name=aName;No=aNo;}voidassignDorm(Stringa){dorm=a;}voidprovideTel(Stringb){tel=b;}publicstaticvoidmain(String[]args){Student

1 / 64
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功