Java程序设计应用开发教程 课件 单元3 面向对象基础_第1页
Java程序设计应用开发教程 课件 单元3 面向对象基础_第2页
Java程序设计应用开发教程 课件 单元3 面向对象基础_第3页
Java程序设计应用开发教程 课件 单元3 面向对象基础_第4页
Java程序设计应用开发教程 课件 单元3 面向对象基础_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

单元3

面向对象基础程序设计3.1类和对象任务描述任务3.1设计车辆信息类在成品自动出货管理系统中,涉及车辆信息管理。使用面向对象设计方法实现货运公司的各种车型的管理。面向对象设计的过程就是抽象的过程,根据业务需求,关注与业务相关的属性和行为,按照发现类、发现类的属性和发现类的方法的步骤,完成车辆信息类的设计。按照面向对象设计过程,抽象出车辆信息类,其类的属性包括车牌号码(TruckID)、车型名称(VehicleTypeName)、车辆规格(Specs)、车辆容载量(Capacity)、公司名称(CompanyName)、司机(DriverName)、行驶证号码(TruckNumber)等,其方法输出车辆信息。效果如图3-1所示。图3-1任务3.1程序运行结果知识目标理解面向对象与面向过程的区别。理解类与对象的概念。理解实例对象与匿名对象的概念。熟悉类定义与对象创建的语法。能力目标能熟练运用面向对象程序方法对现实世界抽象建模。能熟练设计类图。能熟练使用类建模对象。素养目标用类比的方法进行知识的迁移。学会主动分析热点问题,积极探索问题的求解方法与思路。团队开发,遵循规范,能提高开发效率,降低沟通成本。任务3.1设计车辆信息类面向对象程序设计面向对象编程(ObjectOrientedProgramming,OOP,面向对象程序设计)的主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为。面向过程编程

面向过程编程(procedure-Orientedlanguage,POP)的主要思想通过一系列的过程(即算法)来求解问题。(1)开始游戏(2)黑子先走(3)绘制画面(4)判断输赢(5)轮到白子(6)绘制画面(7)判断输赢(8)返回步骤(9)输出最后结果(1)黑白双方模块(2)棋盘模块(3)规则模块按步骤按模块相关知识3.1.1面向对象概述

类和对象对象

英文称作“Object”,表示任意存在的事物。世间万物皆对象。现实世界中随处可见的一种事物就是对象,对象是事物存在的实体。对象行为(动态部分,对象执行的动作)属性(静态部分,对象的特征)

名胜人

物品

动物3.1.1面向对象概述对象

英文称作“Object”,表示任意存在的事物。世间万物皆对象。现实世界中随处可见的一种事物就是对象,对象是事物存在的实体。对象行为(动态部分,对象执行的动作)属性(静态部分,对象的特征)类和对象3.1.1面向对象概述思考:在电商网站中,存在哪些对象,它们又具备哪些行为?类和对象3.1.1面向对象概述类

从广义来说,具有共同性质的事物的集合就成为类(class)。在面向对象程序设计中,类是封装对象的属性和行为的载体,反过来说,具有相同属性和行为的一类实体被称为类。顾客轿车类和对象3.1.1面向对象概述类

从广义来说,具有共同性质的事物的集合就成为类(class)。在面向对象程序设计中,类是封装对象的属性和行为的载体,反过来说,具有相同属性和行为的一类实体被称为类。

类和对象3.1.1面向对象概述类和对象之间的关系人属性1:姓名属性2:年龄

属性3:职业行

为:工作人姓名:李波年龄:28职业:讲师行为:软件培训人姓名:唐颜年龄:34职业:医生行为:看病人姓名:王涛年龄:22职业:程序员行为:软件开发设计类类不是对象,却是用来创建对象的模型。它可以告诉虚拟机如何创建某种类型的对象。类也是一种数据类型,是引用数据类型。3.1.1面向对象概述类和对象之间的关系人属性1:姓名属性2:年龄

属性3:职业行

为:工作人姓名:唐颜年龄:34职业:医生行为:看病设计类类描述了一组有相同特性(属性)和相同行为(方法)的对象,类是对象的模板。对象是类的实例,是类的实例化结果。类的属性:使用成员变量来描述。类的行为:使用方法来描述对象本身已知的属性:实例变量对象可以执行的动作:方法3.1.2定义类类表示法—类图设计类类:Person属性:+name:String+age:

int+career

String+address

:String方法:+work():

void类的命名以大写字母开头。属性的命名都是以小写字母开头,如果有多个单词,后续单词的首字母大写。方法的命名建议用动词,也是小写字母开头,如果有多个单词,后续单词的首字母大写。+符号表示权限修饰为public。代码编写规范:3.1.2定义类定义类类是对象的模板,包含方法和数据。[类修饰符]class

类名{

//定义属性部分属性1的数据类型属性1;属性2的数据类型属性2;……属性n的类型属性n;

//定义方法部分方法1;方法2;……方法m;

}publicclassPerson{

publicStringname;publicintage;

publicStringcareer;

publicvoidwork(){

System.out.print(name+“的职业是”+career);}}权限修饰符属性方法3.1.2定义类创建对象类是对象的模板。对象是类的实例,是类的实例化结果。要想使用对象,就必须首先构造对象,并指定其初始状态。声明、实例化对象使用new创建类的一个对象<类名>variable=new<类名>()声明指向“由类所创建的对象”变量variable。利用new运算符创建新的对象,并指向先创建的变量。例如:Personp1=newPerson();//声明Person对象p1并直接实例化此对象对象只有实例化之后才能被使用,而实例化对象的关键字就是new。3.1.3创建对象创建对象使用对象访问属性:对象名.属性名调用方法:对象名.方法名()如果要访问对象的某个成员变量或方法时,可以使用圆点运算符“.”进行以下操作。例如:访问Person类中的属性与方法=“唐颖”;//访问Person类中的name属性p1.age=30;//访问Person类中的age属性p1.career=“医生”;//访问Person类中的career属性p1.work();//调用Person类中的work()方法。3.1.3创建对象创建对象匿名对象简单的理解,匿名对象是指没有名字的对象。相对于对象实例化的操作来讲,匿名对象就是指只开辟了堆内存空间,而没有栈内存指向的对象。new<类名>()特点匿名对象没有被其他对象所引用,即没有栈内存指向。由于匿名对象没有栈内存指向,所以其只能使用一次,之后就变成无法找寻的垃圾对象,故此会被垃圾回收器收回。匿名对象在实际开发中基本都是作为其他类实例化对象的参数传递的。3.1.3创建对象示例:Customer客户类及其对象编写客户Customer类,具有属性:姓名,身份证号,联系电话,家庭住址等,具有查看个人信息的方法。客户类Customer属性:+name:String+idNumber:

String+tel:

String+address:String方法:+displayCustomer():

voidpublic

classCustomer{publicStringname="张小萌";public

String

idNumber=;publicStringtel;

publicStringaddress;public

voiddisplayCustomer(){System.out.println("姓名:"+name+....);}}定义Customer类,为属性赋初始值。3.1.3创建对象创建两个Customer类的对象,为属性赋值,并查看他们的信息。customer01customer02Customerpublic

static

voidmain(String[]args){Customercustomer01=newCustomer();Customercustomer02=newCustomer();customer01.name="李可";customer02.tel=;customer01.displayCustomer();customer02.displayCustomer();}示例:Customer客户类及其对象3.1.3创建对象单元3

面向对象基础程序设计3.2static关键字任务描述任务3.2使用static设计车辆信息类使用面向对象设计方法实现货运公司的各种车型的管理,首先是“抽象”出类,设计类的属性与方法。然后使用new实例化一个对象,才能访问类的属性与方法。但是有时不需要实例化就可以直接使用类的属性与方法,则使用static关键字来修饰类的成员(属性与方法),就可以实现。按照面向对象设计过程,抽象出车辆信息类,其类的属性包括车牌号码(TruckID)、车型名称(VehicleTypeName)、车辆规格(Specs)、车辆容载量(Capacity)、公司名称(CompanyName)、司机(DriverName)、行驶证号码(TruckNumber)等,其方法输出车辆信息。效果如图3-2所示。图3-2任务3.2程序运行结果知识目标熟悉类与对象的概念。熟悉static关键字的含义。熟悉成员变量与静态变量的区别。熟悉成员方法与静态方法的区别能力目标能熟练运用static关键字定义与使用静态变量。能熟练运用static关键字定义与使用静态方法。能熟练成员方法实现模块化设计。素养目标培养学生问题整合归类的能力,逐步建立模块化程序设计思维能力。团队成员之间资源共享,协同合作精神。任务3.2使用static设计车辆信息类方法作用英文称作“method”,用来实现类的行为。在Java中,方法就是用来完成解决某件事情或实现某个功能的办法,一个方法,通常是用来完成一项具体的功能(function)。对象方法操作属性状态的代码块调用返回数据成员public

classCustomer{publicStringname;public

voiddisplayCustomer(){System.out.println("姓名:"+name);}}public

static

voidmain(String[]args){Customercustomer01=newCustomer();

customer01.name="李可";customer01.displayCustomer();

}对象调用方法类中定义方法相关知识3.2.1成员方法方法的定义格式:修饰符

返回值类型方法名(参数列表){

//这里编写方法的主体}定义方法的权限访问类型方法返回的数据类型方法名是一个动词,如果有两个以上单词组成,第一个单词的首字母小写,其后单词首字母大写参数列表将方法需要的一些必要数据传给该方法方法体完成一定功能方法的进阶应用方法的调用方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果。对象名.方法名();3.2.1成员方法方法的进阶应用写出兔子对象的“跑”方法写出兔子对象的“唱歌”方法电动玩具兔子属性:颜色:白色行为:跑唱歌publicclassAutoRabbit{publicStringcolor=“白色";public

void

run(){System.out.println(“一蹦一跳");}publicStringsing(){Stringsound=“小兔乖乖";returnsound;}}按此按钮,兔子开始跑访问类型返回类型方法名称方法体3.2.1成员方法方法参数调用方法时可以给该方法传递一个或多个值,传给方法的值称为实参;在方法内部,接受实参的变量称为形参;形参与实参在数量、类型、顺序上严格保证一一对应的关系值参数值传递表明实参与形参之间按值传递,当使用值参数的方法调用时,编译器为形参分配存储单元,然后将对应的实参的值复制到形参中,由于是值类型的传递方法,在方法中对值类型的形参修改并不会影响实参。引用参数如果在给定方法传递参数时,参数的类型是数组或者其他引用类型,则在方法中对参数的修改会影响到原有的数组或引用类型上。这种类型的方法参数被称之为引用参数。方法的进阶应用3.2.1成员方法重要方法toString()public

void

displayCustomer(){Stringinfo="姓名:"+name+"身份证号:"+idNumber+"电话:"

+tel+"地址:"

+address;System.out.println(info);}public

StringtoString(){Stringinfo="姓名:"+name+"身份证号:"+idNumber+"电话:"

+tel+"地址:"

+address;

returninfo;}System.out.println(customer01);System.out.println(customer02);customer01.displayCustomer();customer02.displayCustomer();方法的进阶应用3.2.1成员方法案例:成员方法应用3.2.1成员方法编写手机类(Phone):它可以下载音乐,可以播放这些音乐,可以进行充电编写电池类(Cell):自动续电编写测试类(Test)手机类属性:无方法:play()显示“播放……”,调用下载音乐方法downloadMusic()返回下载的音乐名称chargeCell()充电,调用Cell类的续电方法电池类属性:brand品牌方法:getPower()“续电”方法,显示充电信息手机测试类测试手机的播放音乐和充电方法静态方法静态方法Java中方法分为静态方法和非静态(普通)方法。静态方法的声明public

static

返回值类型方法名([参数列表]

){

//这里编写方法的主体}使用static关键字修饰不需要实例化的方法。静态方法和非静态(普通)方法?思考3.2.2静态方法静态方法的调用在不创建对象的前提下,可以直接调用静态方法,语法如下:类名.静态方法名();静态方法3.2.2静态方法类的主方法主方法是类的入口点,它指定了程序从何处开始,提供程序流程的控制。Java编译器通过主方法来执行程序。publicstaticvoidmain(String[]agrs){//方法体}主方法是静态的,所有直接在主方法中调用其他方法,则该方法必须也是静态的。主方法没有返回值。主方法的形参为数组。其中agrs[0]~agrs[1]分别代表程序的第一个参数到第n+1个参数,可以使用args.length获取参数的个数。静态方法3.2.2静态方法单元3

面向对象基础程序设计3.3构造方法任务描述任务3.3使用构造方法设计车辆信息类使用面向对象设计方法实现货运公司的各种车型的管理,首先是“抽象”出类,设计类的属性与方法。然后使用new实例化一个对象,才能访问类的属性与方法。对于对象的实例变量在没有手动赋值的时候,系统会赋默认值。我们可以通过构造方法实现对象的创建并初始化。按照面向对象设计过程,抽象出车辆信息类,其类的属性包括车牌号码(TruckID)、车型名称(VehicleTypeName)、车辆规格(Specs)、车辆容载量(Capacity)、公司名称(CompanyName)、司机(DriverName)、行驶证号码(TruckNumber)等,其方法输出车辆信息。使用构造方法实现对象的创建并初始化。效果如图3-1所示。图3-3任务3.3程序运行结果知识目标理解构造方法的作用。理解方法重载概念与作用。熟悉带参数的构造方法的定义与调用。熟悉this关键字的应用。能力目标能熟练运用方法重载实现方法的多态。能熟练使用无参数构造方法实例化对象。能熟练使用有参数构造方法实例化对象。能熟练使用this关键字。素养目标敬业、专注、精益求精的工匠精神。团队开发,遵循规范,能提高开发效率,降低沟通成本。任务3.3使用构造方法设计车辆信息类什么是方法重载在同一个类中同时存在多个同名的方法,但是有不同的参数列表,被称为方法的重载。参数列表不同:参数的类型、参数的个数、参数的顺序只要有一个不同。publicstaticvoidmain(String[]args){

Phonemyphone=newPhone();

myphone.Ring();

myphone.Ring("我送你离开,千里之外...");myphone.Ring("嘻唰唰嘻唰唰...",10);}相关知识3.3.1方法重载示例:方法重载public

classOverLoadTest{

public

static

intadd(inta,intb){return

a+b;}public

static

doubleadd(doublea,doubleb){return

a+b;}public

static

intadd(inta,doubleb){return(int)(a+b);}public

static

intadd(doublea,intb){return(int)(a+b);}public

static

intadd(int...a){int

s=0;for(int

i=0;i<a.length;i++){

s=s+a[i];}return

s;//将计算结果返回}public

static

voidmain(Stringargs[]){System.out.println(add(12,24));System.out.println(add(22.4,13.3));System.out.println(add(23,43.3));System.out.println(add(12.1,23));System.out.println(add(11,12,13,14,15,16,17,18,19));System.out.println(add(22,33,44));}}定义不定长参数编写静态的add()方法多个重载的形式方法的多态即是通过传递不同的参数来令同一方法接口实现不同的功能。3.3.1方法重载为什么需要构造方法?public

static

voidmain(String[]args){Customercustomer01=newCustomer();Customercustomer02=newCustomer();customer01.name="李可";customer01.idNumber="43176619990228228";customer01.tel=;

customer01.address="苏州太湖新城";customer02.name="张路";customer02.idNumber="320533200076567545";customer02.tel=;

customer02.address="苏州科技城";customer01.displayCustomer();customer02.displayCustomer();}如果在每次创建一个实例时都要初始化类中的所有成员变量,这样实在太繁琐public

classCustomer{publicStringname;public

String

idNumber;publicStringtel;

publicStringaddress;public

voiddisplayCustomer(){System.out.println("姓名:"+name+....);}}构造方法3.3.1方法重载什么是构造方法在Java语言,为了便于给予类创建对象时就可以向对象传递参数,以及对类的成员变量进行初始化。提供一种叫“构造器”的解决方法,即构造方法。用来初始化对象,以方便对象在创建后就可以立即使用。在Java类中,如果不定义构造方法,系统会有一个默认的构造方法。publicclassBook{publicBook(){}//无参数的构造方法publicBook(intargs){}//有参数的构造方法}构造方法3.3.2构造方法构造方法的特点

构造方法没有返回类型,也不能定义void

构造方法的名称要与本类的类名相同。

构造方法的主要作用是

温馨提示

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

评论

0/150

提交评论