java速成第五章面向对象初级(按教材).ppt

上传人:小飞机 文档编号:5436250 上传时间:2023-07-06 格式:PPT 页数:56 大小:1,021.50KB
返回 下载 相关 举报
java速成第五章面向对象初级(按教材).ppt_第1页
第1页 / 共56页
java速成第五章面向对象初级(按教材).ppt_第2页
第2页 / 共56页
java速成第五章面向对象初级(按教材).ppt_第3页
第3页 / 共56页
java速成第五章面向对象初级(按教材).ppt_第4页
第4页 / 共56页
java速成第五章面向对象初级(按教材).ppt_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《java速成第五章面向对象初级(按教材).ppt》由会员分享,可在线阅读,更多相关《java速成第五章面向对象初级(按教材).ppt(56页珍藏版)》请在三一办公上搜索。

1、第5章,面向对象的程序设计概念,一、面向对象的基本概念,抽象;封装;继承;多态。,面向对象程序设计的基本特征:,对象与类,简单地说:对象是表示现实世界中某个具体的事物;类是对对象的抽象描述。,对象(object)我们可以把生活所在的真实世界(Real World)当作是由许多大小不同的对象所组成的。对象可以是有生命的个体,比如一个人或一只鸟。,对象,对象也可以是无生命的个体,比如一辆汽车或一台计算机。对象也可以是一件抽象的概念,如天气的变化或鼠标所产生的事件。,对象(object),计算机世界中的对象是把数据及其相关的操作封装在一起所构成的实体。封装的实体=数据+方法(行为)数据:属性或状态方

2、法:作用于数据上的操作封装:属性的访问和变化通过方法完成,对象的特征,对象有两个特征:状态(state)和行为(behavior)。例如:一个人有他的身高或体重作状态,并有他的行为如唱歌、打球、骑摩托车、开汽车。一只狗有它的颜色作状态,也有它的行为,如吠叫或跳跃。而在程序设计中,软件对象的概念由真实世界对象而来。对象的概念是面向对象软件对象将状态保存在变量(variables)或称数据字段(data field)里。而行为则借助方法(methods)为工具来实现。,软件对象的定义,我们可以对软件对象作以下的定义,定义:对象是由数据字段(变量)及相关方法所组成的软件包,汽车对象,以汽车为例,我们

3、可定义其状态与方法如:,通过换档(方法)改变当前档位(属性),当前档位,面向对象设计思想,1、抽象:是从特定的对象(实例)中抽取共同的性质以形成类(一般化概念)的过程。,二、类(class)的概念,类:是一种抽象的数据类型,它是所有具有一定共性的对象的抽象。本质上可以认为是对对象的描述,使创建对象的“模板”。类的某一个对象则被称为是类的一个实例,是类的实例化结果。,实例化,抽象,类(class),在真实世界里,有许多同“种类”的对象。而这些同“种类”的对象可被归类为一个“类”。例如我们可将世界上所有的汽车归类为汽车类,所有的动物归为动物类。,实例(instance),汽车类有些共同的状态(汽缸

4、排气量,排档数,颜色,轮胎数)和行为(换档,开灯,开冷气),但每一台汽车个别的状态及方法可不同于且独立于其他汽车。你的汽车只是这世界中许多汽车中的一个。我们就称你的汽车对象是汽车类中的一个实例(instance)。,方法(method),方法 是对象的行为方式(操作)对象与外界的接口作用 改变对象的属性返回对象的属性,object1,object2,面向对象方法的主要优点,与人类习惯的思维方法一致可重用性可扩展性可管理性,三、定义类,修饰符 class 类名 extends 父类 implements 接口名 类成员变量声明;类方法声明;,任务5-1 定义类,public class Stud

5、ent String name;int No;String dorm;String tel;void checkIn(String a,int b)name=a;No=b;void assignDorm(String a)dorm=a;void provideTel(String b)tel=b;,四、对象的定义,修饰符 类名 对象名=new 类名(实参列表);或修饰符 类名 对象名;对象名=new 类名(实参列表);,创建对象,类名 对象名;Student zhang;注意:类属于复合数据类型,因此,在声明对象时,系统并没有为对象分配空间,用户需要应用new完成分配空间的任务。zhang=n

6、ew Student();,与数组的对比性int score;score=new int10;,合二为一:Student zhang=new Student();,对象的引用,引用成员变量对象名.成员变量名引用方法对象名.方法名(参数列表),对象的生命周期,1.对象的生成2.对象的使用3对象的清除,由类的定义产生对象,【任务5-2】使用Student类,public class TermBegins public static void main(String args)Student zhang;zhang=new Student();zhang.checkIn(张三,001);zhang.

7、assignDorm(A-101);zhang.provideTel();System.out.println(姓名:+zhang.name);System.out.println(学号:+zhang.No);System.out.println(宿舍:+zhang.dorm);System.out.println(联系电话:+zhang.tel);,姓名:张三学号:1宿舍:A-101联系电话:,创建对象,演示,定义一个cube类,代表一个立方体包含的属性有:长、宽、高,分别保存在变量x,y,z里面方法有:求表面积 求体积在main函数里定义一个cube类对象a,并设置立方体a的长宽高分别为3

8、,4,5,并求出立方体a的表面积和体积打印出来。,上机作业1,设计一个交通工具Vehicle,属性包括最大速度 speed、颜色 color、类别 kind、方法包括设置速度,颜色,类别,取得速度。颜色,类别创建Vehicle对象,并为其设置新最大速度和颜色和类别,并显示其最大速度、颜色、类别,上机作业2,(1)编写一个位置类Position,包含两个成员变量:横坐标x,纵坐标y;一个方法:printInfo,打印出横坐标和纵坐标;(2)编写Position类的测试程序,创建一个点类的对象a,横坐标、纵坐标分别为3,4,要求输出点a的相关信息;,举例:汽车的例子,package ch5.wee

9、k2;public class Car int speed;String color;String no;void drive(int a)speed=speed+a;void print()System.out.println(speed=+speed);System.out.println(color=+color);System.out.println(no=+no);void changeColor(String aColor)color=aColor;void changeNo(String aNo)no=aNo;,package ch5.week2;public class Cub

10、e/与main方法平行的地方写cube的属性和方法int x,y,z;int area()int tmp=2*(x*y+y*z+z*x);return tmp;int volumn()int tmp=x*y*z;return tmp;public static void main(String args)Cube b1=new Cube();b1.x=3;b1.y=4;b1.z=5;System.out.println(表面积+b1.area();System.out.println(体积+b1.volumn();,举例:立方体的例子,package ch5.week2;public clas

11、s Dog int age;String name;float weight;boolean isHungry;void grow()age=age+1;void eat(float foodWeight)weight=weight+foodWeight;,举例:小狗的例子,测试各种类的程序,package ch5.week2;public class test/*param args*/public static void main(String args)/TODO Auto-generated method stub/dog/car/*Car myCar=new Car();/组装新车m

12、yCar.color=red;myCar.no=gz9090;myCar.speed=0;myCar.print();/改装车myCar.drive(40);myCar.changeColor(blue);myCar.changeNo(888888);myCar.print();Car yourCar=new Car();/组装新车yourCar.color=green;yourCar.no=gz9091;yourCar.speed=0;yourCar.print();/改装车yourCar.drive(40);yourCar.changeColor(yellow);yourCar.chang

13、eNo(888886);yourCar.print();Car sheCar=new Car();Car aBoyCar=sheCar;*/Dog dog1;dog1=new Dog();dog1.name=tom;dog1.age=2;dog1.weight=2;dog1.eat(0.5f);System.out.print(dog1体重+dog1.weight);Dog dog2=new Dog();dog2.name=jack;dog2.age=2;dog2.grow();System.out.println(dog2年龄+dog2.age);,上机课补充:上机作业3,设计一个银行卡类属

14、性:帐号:由 10位数字和字母组合起来的余额:不能小于0存钱:输入一个存钱的数量,可以让余额增长取钱:规定一次最多取3000元,如果超过3000,则不让取,即取钱方法返回false,另外,如果取钱数量多于余额也返回false,当取钱成功则返回true测试程序,生成一个帐号,初始余额为0,存入2000,再取出200。,第三周,上机作业1代码,package ch5.shixun.work5_1;public class veichle int speed;String color;String kind;void setColor(String aColor)color=aColor;void

15、setSpeed(int aSpeed)speed=aSpeed;void setKind(String aKind)kind=aKind;public static void main(String args)/TODO Auto-generated method stubveichle a=new veichle();a.setColor(red);a.setKind(car);a.setSpeed(120);System.out.println(a.color);System.out.println(a.speed);System.out.println(a.kind);,上机作业2代码

16、,package ch5.shixun.work5_1;public class Position int x,y;void setXY(int a,int b)x=a;y=b;void printInfo()System.out.println(+x+,+y+);public static void main(String args)Position a;a=new Position();a.setXY(3,4);a.printInfo();,上机作业3代码,package ch5.shixun.work5_1;public class bankCard String cardNo;doub

17、le money;void save(double a)money=money+a;System.out.println(帐号+cardNo+已存入+a+元);System.out.println(目前帐号余额+money+元);boolean get(double b)if(b=3000,常见问题解析,1在方法中不知道取出类中已有的属性进行操作,又用输入参数去操作 如第二题的printInfo函数第三题:2属性设得太多,不但有帐号和余额,还有取钱和存钱的数量,其实取钱和存钱的数量是不用属性的,应该由测试程序输入参数来获得3 将存钱和取钱的方法放到 一个方法中实现,不符合现实情况,甚至将存20

18、00和取200这样具体的数字都写死在程序中,不利于灵活调用存钱或者取钱的方法4 取钱的方法中,大都判断完可以取钱之后并没有让“余额减去取出钱的数量”的代吗5 个别同学对取钱的逻辑判断不清楚,最简单的就用一个逻辑表达式也可以的。,第三周课(1)见2周课上机作业讲解,概念题,1.以下说法不正确的是()。A)类是同种对象的集合和抽象 B)类是抽象的数据类型 C)类是复合数据类型 D)类是一个对象5.设 A为已定义的类名,下列声明A类的对象a的语句中,正确的是()。A)float A a;B)public A a=A();C)A a=new int();D)static A a=new A();,1、

19、D5、D,6.设 A为已定义的类名,下列声明A类的对象a的语句中正确的是()。A)public A a=new A();B)public A a=A();C)A a=new class();D)a A;7.设 X、Y 均为已定义的类名,下列声明类X的对象x1的语句中正确的是()。A)public X x1=new Y();B)X x1=X();C)X x1=new X();D)int X x1;,6、A 7、C,1、一个对象的三个生命周期是_、_、_。2、使用一个对象前,必须声明并_它。3、创建类对象的运算符是_。创建的目的是_。5、通过_运算符与类的对象连接,可以访问此类的成员。6.定义类就

20、是定义一种抽象的_,它是所有具有一定共性的对象的抽象描述。8.面向对象的软件开发方法用_把数据和基于数据的操作封装在一起。,1、创建;使用;清除2、创建3、new 给对象分配内存空间5、圆点操作符“.”6、数据类型8、类,三、简答题:,1、一个类对象一旦被声明并创建后就可以使用吗?如何引用对象的变量和调用它的方法?2.一个对象一定要属于某个类吗?3.一般地,一个类的类体应由哪两部分组成?4.在一个类定义中,用什么描述对象的状态?用什么描述对象的行为?6.定义在方法体中的变量能与定义在方法体外的变量同名吗?,1、可以;用对象名做前缀2、是3、变量定义和方法定义4、变量或属性;方法6、可以,第三周

21、课新内容,对象的初始化,类中包含有成员变量和方法,当使用类声明并创建对象时,使用new关键字,这时系统为对象创建自己的内存区域并自动调用构造方法初始化成员变量。,构造方法,构造方法是一个特殊的成员方法,它与类名相同。在创建对象空间后,系统自动根据参数调用相应的构造函数。构造函数的主要功能是为数据成员赋初值。,构造方法的特点,构造方法名与类名相同;构造方法没有返回类型,也不是void;构造方法的主要作用是对类对象的初始化。如果没有定义构造方法时,成员变量将被初始化为各种类型的默认值;构造方法只能与new关键字初始化对象时使用,其他时候不能使用;一个类可以定义多个构造方法,根据参数的不同决定执行哪

22、一个。,public class Student String name;int No;String dorm;String tel;Student(String aName,int aNo)name=aName;No=aNo;void assignDorm(String a)dorm=a;void provideTel(String b)tel=b;public static void main(String args)Student zhang=new Student(张三,001);zhang.assignDorm(A-101);zhang.provideTel();,任务5-3定义构造

23、方法,构造方法作用:避免对象创建后没有任何内容,强制程序员在创建对象时就给某些变量一些初始值,任务5-4多个构造方法,Student(String aName,int aNo)name=aName;No=aNo;Student(int aNo)No=aNo;Student(String aName)name=aName;,多个构造方法,为程序员提供多种选择,在创建对象时,可以任意使用其中一个,public class Student String name;int No;String dorm;String tel;Student(String aName,int aNo)name=aName

24、;No=aNo;Student(int aNo)No=aNo;Student(String aName)name=aName;void assignDorm(String a)dorm=a;void provideTel(String b)tel=b;,任务5-4源代码,public static void main(String args)Student zhang=new Student(张三);zhang.assignDorm(A-101);zhang.provideTel();System.out.println(姓名:+zhang.name);System.out.println(学

25、号:+zhang.No);System.out.println(宿舍:+zhang.dorm);System.out.println(联系电话:+zhang.tel);System.out.println(*);Student li=new Student(002);li.assignDorm(A-102);li.provideTel();System.out.println(姓名:+li.name);System.out.println(学号:+li.No);System.out.println(宿舍:+li.dorm);System.out.println(联系电话:+li.tel);,任

26、务5-4源代码,上课演示,一、类的定义及使用(1)编写一个二维坐标的点类Position,包含两个成员变量:横坐标x,纵坐标y;还有一个printInfo()方法,可以打印该点x,y(2)为Position类添加一个不带参数构造方法,将横坐标纵坐标初始化为原点,(3)为Position类添加一个带参数的构造方法,传两个参数用于初始化坐标。(4)编写Position类的测试程序test类,在test类的 main方法中,调用不带参数的构造方法,创建一个点a,输出点a的相关信息调用带参数的构造方法创建一个点b(3,4),输出点b的相关信息;,上课演示代码,package ch5.week3.cla

27、s12;public class pot int x,y;void printInfo()System.out.println(+x+,+y+);pot(int aX,int aY)x=aX;y=aY;pot()x=0;y=0;public static void main(String args)pot a=new pot(3,4);a.printInfo();pot b=new pot();b.printInfo();pot c=new pot();c.printInfo();c.x=6;c.y=10;c.printInfo();,34班,概念题,8.设i,j为类X中定义的int型变量名,

28、下列X类的构造函数中不正确的是()。A)void X(int k)i=k;B)X(int k)i=k;C)X(int m,int n)i=m;j=n;D)X()i=0;j=0U1;4、通过类MyClass中的不含参数的构造函数,生成该类的一个对象obj,可通过以下语句实现:7._是一个特殊的方法,用于对类的变量进行初始化。_。,7.构造函数的方法名可由编程人员任意命名吗?8.类的构造函数名必须和类名相同吗?9.构造函数有返回值吗?10.构造函数可以重载吗?,概念题,课堂练习,如何给一个立方体设置四个输入参数个数不同的构造方法?class cube int x,y,z;,第3周上机作业,类名:羊

29、城通卡假设公交车都是2元/次属性:余额 卡号 种类(0普通 1学生卡)方法:开卡(默认面值0,可选 50 或100)充值(50或100)坐车(普通卡:前15次2元/次,之后6折)(学生卡:直接五折)查看余额:打印余额 测试:买普通新卡一张,充值50元,坐车16次,查看余额 买学生新卡一张,充值100元,坐车89次,查看余额,这三种方法都要求显示余额,及当时充值或消费的金额,带参数和不带参数的构造方法,提示:卡号暂时由测试程序使用时给出普通卡坐车次数需要用一个属性记录 如count,上机作业提示,package ch5.week3.clas12;public class BusCard/属性no;money;kind/0普通卡 1 学生卡BusCard(int b)/b 1代表0 2 代表50 3代表100/代码中判断save(double a)/a必须为50 100/修改money的值getBus()/根据卡类型扣除费用/(即修改money值)printInfo()/打印卡号和余额public static void main(String args),34班,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号