Java程序设计JavaProgramming1第三章类和对象计算机网络与多媒体研究所计算机科学与技术、软件学院浙江工业大学高家全Cell:13588097481Email:springf12@163.comJava程序设计JavaProgramming2前言本章的目的:什么是面象对象?有哪些特征?对象如何生成?何时清除?方法参数如何传递?访问权限如何设置?回顾关键词:标识符(4种字符:字母、数字、_、$,首字符:字母、_、$)、关键字、8种基本数据类型(boolean\char\byte、short、int、long\float、double)、运算符、流程控制、结构化程序设计、5种参数输入方式Java程序设计JavaProgramming3小题目1、从下面列表中,哪些是不正确的标示符()A.IDoLikeTheLongNameClassB.$byteC.constD._okE.3_caseEJava程序设计JavaProgramming4小题目2、下面代码执行后,正确的输出结果是:()publicclassExample{publicstaticvoidmain(Stringargs[]){intl=0;do{System.out.println(Doingitforlis:+l);}while(--l0);System.out.println(Finish);}}A.Doingitforlis3B.Doingitforlis1C.Doingitforlis2D.Doingitforlis0E.Doingitforlis?C1F.FinishD、FJava程序设计JavaProgramming5小节安排类和对象3.1、面向对象技术基础3.2、类3.3、对象3.4、this关键字3.7、import和包3.5、static关键字3.6、final关键字Java程序设计JavaProgramming63.1面向对象技术基础对象是客观世界中的某个具体事物,对象的概念是面向对象技术的核心。面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现,它可以是有形的,也可以是无形的。比如:电视是一个具体存在的,拥有外形、尺寸、颜色等外部特性(或称属性)和开、关、设置等功能的实体。Java程序设计JavaProgramming7对象的基本概念从程序设计的角度来看,事务的属性或特性可以用变量来表示,行为或功能则用方法来反映面向对象的程序设计方法就是将客观事物抽象成为“类”,并通过类的“继承”实现软件的可扩充性和可重用性Java程序设计JavaProgramming8类(class)类是同种对象的集合与抽象。在面向对象的程序设计中,定义类的概念来表述同种对象的公共属性和特点。类是一种抽象的数据类型,它是具有一定共性的对象的抽象,而属于类的某一对象则被称为是类的一个实例,是类的一次实例化的结果。Java程序设计JavaProgramming9用面向对象程序设计解决实际问题的基本思想首先将实际存在的实体抽象成概念世界的抽象数据类型,这个抽象数据类型里面包括了实体中与需要解决的问题相关的数据和属性;然后再用面向对象的工具,如java语言,将这个抽象数据类型用计算机逻辑表达出来,即构造计算机能够理解和处理的类;最后将类实例化就得到了现实世界实体的面向对象的映射——对象,在程序中对对象进行操作,就可以模拟现实世界中的实体上的问题并解决之。Java程序设计JavaProgramming10对象、实体与类关系图抽象数据类概念世界实体现实世界对象类计算机逻辑的实现映射Java程序设计JavaProgramming11案例:学生成绩查询系统1.教师登录系统后可输入授课课程的成绩供学生查询,并可统计学生的平均成绩和各等级的学生人数;2.学生登录系统后可查询自己的各门课程成绩;Java程序设计JavaProgramming12系统分析(1):确定对象找出问题描述领域中的主要名词对象可能是:简单的或复杂的(如学生,课程)真实的或概念的(如课程成绩)对象有:属性操作(或功能行为)Java程序设计JavaProgramming13确定学生成绩查询系统中的对象学生成绩查询系统对象可能有学生教师JAVA程序设计课程Lee80John75Mark90Henry65Flank82成绩Java程序设计JavaProgramming14测试对象与问题域的相关性对象是否在问题陈述的界限之内?系统是否必须有此对象才能完成任务?在用户与系统的交互中是否必须有此对象?独立存在性对象之间可以是相关的,但仍是独立存在的评估一个可能的对象是否有此特征时,应考虑此对象是否需要独立存在,而不是作为另外一个对象的属性而存在要有属性和操作Java程序设计JavaProgramming15系统分析(2):确定对象属性和操作属性:是对象的特征,属性知道某些事情。可以是数据或对象对学生对象来说,可能包括学号和选修课程操作:是对象执行的动作,操作根据所知道的来做某些事情。可以是对象做出的或施加给对象的动作,往往会影响对象的属性对教师对象来说,可能是上报成绩和修改成绩Java程序设计JavaProgramming16学生成绩查询系统案例研究中的对象可能的属性和操作学生属性有姓名、性别、学号、班级、专业、院系、学校、登录名和密码等操作有登录、查询成绩和聊天等教师属性有姓名、性别、工号、院系、学校、登录名和密码等操作有登录、上报成绩、统计成绩、查询成绩、修改成绩等Java程序设计JavaProgramming17学生成绩查询系统案例研究中的对象可能的属性和操作(续)课程属性课程名、课程编号、学时、学分、学期、授课教师和选修学生等操作有设置授课教师、获取授课教师、设置选修学生和获取选修学生等成绩属性有课程、学生和分数等操作有设置课程编号、获取课程编号、设置学生编号、获取学生编号、设置分数和获取分数等Java程序设计JavaProgramming18系统分析(3):为对象建模CoursenamecourseIDtermclassHourcreditHourteacherstudentssetTeacher()getTeacher()setStudent()getStudent()ScorecourseIDstudentIDscoressetScore()getScore()setStudentIDgetStudentIDsetCourseIDgetCourseIDStudentnamesexstuIDclassnamemajorcollegeSchoolloginNamepasswordlogin()searchScore()chat()TeachernamesexteacherIDcollegeSchoolloginNamepasswordlogin()reportScore()statisticsScore()inquireScore()modifyScore()chat()对象属性功能Java程序设计JavaProgramming19小节安排类和对象3.1、面向对象技术基础3.2、类3.3、对象3.4、this关键字3.7、import和包3.5、static关键字3.6、final关键字Java程序设计JavaProgramming203.2类类的格式类首声明{类主体}类首声明定义类的名字、访问权限以及与其它类的关系等。类主体定义类的成员,包括变量(数据)和方法(行为)Java程序设计JavaProgramming21类首声明•Java的程序代码一般都写在类中。类的开始和结束用“{}”来标示。•一个Java程序可能由多个类构成。Java程序的基本要素publicclassTriangle{doublelength=10.0;doubleheight=5.0;doublearea(){returnlength*height/2.0;}publicstaticvoidmain(Stringargs[]){doubles;s=(newTriangle()).area();System.out.println(“该三角形的面积是:+s);}}Java程序设计JavaProgramming22类首声明[修饰符]class类名[extends超类名][implements接口名]class:类定义的关键字;extends:表示类和另外一些类(超类)的继承关系;implements:表示类实现了某些接口;修饰符:表示类访问权限(public、缺省方式等)和一些其它特性(abstract、final等);一个类可以同时有多个修饰符(任意排序),但不能有相同的修饰符。Java程序设计JavaProgramming23类的修饰符缺省方式:class没有修饰符,只能被同一个包名中的类访问public:能被所有的类访问abstract:修饰的类被称为抽象类。抽象类就是没有具体对象的概念类。final:不能被继承,即类不能有子类Java程序设计JavaProgramming24类主体类首声明{//类首,以下为类主体成员变量的声明成员方法的声明及实现}成员变量即类的数据,反映了类的属性和状态。成员方法即类的行为(对数据的操作)成员方法可以是普通方法、构造方法、main方法Java程序设计JavaProgramming25定义变量的语句,变量用于存放数据。由于数据有相应的类型,所以存放数据的变量也要规定类型。Java程序的基本要素publicclassTriangle{doublelength=10.0;doubleheight=5.0;doublearea(){returnlength*height/2.0;}publicstaticvoidmain(Stringargs[]){doubles;s=(newTriangle()).area();System.out.println(“该三角形的面积是:+s);}}Java程序设计JavaProgramming26Java程序的基本要素方法•方法用来对数据进行处理,从而实现程序的功能。•方法名后面都有括号,括号中可能包括参数。方法的开始和结束也用“{}”来标示。•方法中通常包含一个命令序列。•java程序是从main方法开始执行的。包括main方法的类叫做主类。publicclassTriangle{doublelength=10.0;doubleheight=5.0;doublearea(){returnlength*height/2.0;}publicstaticvoidmain(Stringargs[]){doubles;s=(newTriangle()).area();System.out.println(“该三角形的面积是:+s);}}Java程序设计JavaProgramming27公共类关键字public表明所定义的类是一个公共类一个java文件可以包含多个类,但最多只能包含一个公共类,而且这个公共类必须与其所在的文件同名例如:publicclassJ_HelloJava文件名命名为J_HelloJava.javaJava程序设计JavaProgramming28例:声明一个学生类1.publicclassStudent{2.Stringname;3.charsex;4.intstuID;5.publicStudent(){}6.publicStudent(StringstuName,charsex,intstuID){7.name=stuName;8.this.sex=sex;9.this.stuID=stuID;10.}11.publicvoidsetName(StringstuName){12.name=stuName;13.}14.publicvoidsetSex(charsex){15.this.sex=se