Java- 面向对象分析1
- 格式:pptx
- 大小:533.19 KB
- 文档页数:47
面向对象面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。
面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。
如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
定义首先根据客户需求抽象出业务对象;然后对需求进行合理分层,构建相对独立的业务模块;之后设计业务逻辑,利用多态、继承、封装、抽象的编程思想,实现业务需求;最后通过整合各模块,达到高内聚、低耦合的效果,从而满足客户要求。
在Java中,面向对象可以看成面向抽象和面向接口编程。
浅谈面向对象谈到面向对象,这方面的文章非常多。
但是,明确地给出对象的定义或说明对象的定义的非常少——至少我现在还没有发现。
起初,“面向对象”是专指在程序设计中采用封装、继承、多态等设计方法。
可是,这个定义显然不能再适合现在情况。
面向对象的思想已经涉及到软件开发的各个方面。
如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。
许多有关面向对象的文章都只是讲述在面向对象的开发中所需要注意的问题或所采用的比较好的设计方法。
看这些文章只有真正懂得什么是对象,什么是面向对象,才能最大程度地对自己有所裨益。
这一点,恐怕对初学者甚至是从事相关工作多年的人员也会对它们的概念模糊不清。
面向对象的分解根据抽象关键的问题域来分解系统。
面向对象的设计是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成“现实世界”的对象。
一、传统开发方法存在问题1.软件重用性差重用性是指同一事物不经修改或稍加修改就可多次重复使用的性质。
软件重用性是软件工程追求的目标之一。
《面向对象程序设计——Java》核心课程标准一、课程性质与定位本课程是专业核心课程,也是后续多门专业课的基础课程。
其功能主要是通过课堂教学和实践教学相结合,使学生能够深入理解面向对象概念,掌握面向对象程序的设计思路和流程,具备Java程序编写的基本方法和基本技能,培养学生利用JCreator、Net Beans、Eclipse等开发环境进行Java程序的分析、设计、编码和测试的能力,培养学生科学的思维方法,灵活运用知识的能力,实验操作能力,为后续Java高级编程、Android和Java Web的学习打下坚实的基础。
二、课程设计理念本课程强调对学生面向对象思想和规范编程能力的养成,按照理实一体、课内外互补、课堂教学与培优工程相结合的课程设计指导思想,以任务或项目为载体组织教学内容,采取讲练结合、微课教学、视频辅导、单元测试、赛练融合等多种教学形式和手段,突出学生的主体地位,在校内实训室完成所有教学环节,实现“教、学、做”的有机融合;通过班级讲授、团队学习、个体辅导、展示交流、技能大赛等手段,实现从模仿到应用到创新的高职学生递进式培养。
三、课程目标(一)总体目标通过本课程的学习使学生掌握面向对象的基本概念和使用面向对象技术进行程序设计的基本思想;掌握面向对象编程语言Java的基础知识、类和对象、Java工具类、IO流等知识;以培养学生实际编写Java程序的主要技能为主线,重点围绕Java基础和面向对象思想等内容培养学生编写规范Java代码的技能,并使学生养成善于观察、独立思考的习惯,同时通过教学过程中的实际开发过程的规范要求强化学生的职业道德意识和职业素质养成意识,为学生后续课程学习奠定基础。
(二)具体目标1.能力目标培养学生Java程序基本的分析、设计、编码和测试能力;培养学生自主、开放的学习能力;培养学生良好的编程习惯和准确的语言表达能力;培养学生一定的科学思维方式和分析判断解决问题的能力;培养学生良好的自我表现、与人沟通的能力;培养学生良好的职业道德和勇于创新、敬业乐业的工作作风;培养学生的团队合作意识。
一、面向对象概述(一)计算机语言发展简史晶体管,二进制,机器语言,汇编,面向过程,面向对象(二)什么是面向过程我们来回想一下目前我们完成一个需求的步骤:首先是搞清楚我们要做什么=>然后在分析怎么做=>最后我们再代码体现。
这个过程是一步一步去实现,且具体的每一步都需要我们去实现和操作。
这些步骤相互调用和协作,完成我们的需求。
在上面的每一个具体步骤中我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体现。
那么什么是面向过程开发呢?面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。
面向过程的代表语言:C语言当需求单一,或者系统简单时,我们一步一步去操作没问题,并且效率也很高。
可随着需求的更改,功能的增多,系统的复杂,如果还需要面对每一个步骤,就变成一团乱麻了,人类的进步都是从思想开始进化的,于是我们停下来,想一想:我们用计算机是要干嘛?解决问题。
解决神马问题?人的问题。
如何解决的?模拟人做事的过程。
那么人生来会做事?当然不是,人生下来,首先是认识这个世界,理解这个世界,然后,再做事。
好,来看看人,是如何认识这个世界的(三)什么是面向对象前面我们讲过数组,当有多个数组都需要遍历时,我们可以将遍历的代码封装到方法中,需要遍历时,就调用相应的方法即可,提高代码的复用性。
在对数组遍历的基础上继续增加需求,比如获取最值,数值逆序等,同样需要将这些功能封装到相应的方法中。
这样继续封装会发现方法越来越多,于是就想能不能将这些方法继续进行封装呢?通过前面的讲解我们知道类是可以存放方法的,所以,我们就考虑使用类封装多个方法,将来再做数组的操作时,不用去找具体的方法,先找到这个类,然后使用这个类中的方法。
这就是面向对象思想的编程方式。
(四)面向对象思想概述“面向对象”(英语:Object Oriented,简称OO)是一种以客观事物客观问题为中心,以人的自然思维方式进行思考的编程思想。
面向对象今日内容介绍◆继承◆抽象类第1章继承1.1继承的概念在现实生活中,继承一般指的是子女继承父辈的财产。
在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。
例如公司中的研发部员工和维护部员工都属于员工,程序中便可以描述为研发部员工和维护部员工继承自员工,同理,JavaEE工程师和Android工程师继承自研发部员工,而维网络维护工程师和硬件维护工程师继承自维护部员工。
这些员工之间会形成一个继承体系,具体如下图所示。
图1-1员工继承关系图在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。
1.2继承的格式&使用在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。
格式:class 子类 extends 父类 {}接下来通过一个案例来学习子类是如何继承父类的,如下所示。
Example01.java/** 定义员工类Employee*/class Employee {String name; // 定义name属性// 定义员工的工作方法public void work() {System.out.println("尽心尽力地工作");}}/** 定义研发部员工类Developer 继承员工类Employee*/class Developer extends Employee {// 定义一个打印name的方法public void printName() {System.out.println("name=" + name);}}/** 定义测试类*/public class Example01 {public static void main(String[] args) {Developer d = new Developer(); // 创建一个研发部员工类对象 = "小明"; // 为该员工类的name属性进行赋值d.printName(); // 调用该员工的printName()方法d.work(); // 调用Developer类继承来的work()方法}}运行结果如下图所示。
1. 知识点A 、 面向对象程序设计的思路1、 抽象2、 封装3、 类模板、对象4、 属性(成员属性、类变量[类属性])5、 方法(成员属性方法、成员方法、类方法)6、 方法的调用(一般传参调用、传引用调用、递归调用)7、 包(访问控制)(包、public 、protected 、[default]、private)2. 讲解 A 、 面向对象程序设计的思路(OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编码))1、 抽象(分析过程,发现问题对象的过程,形成数据结构的过程)从现实世界中找到与问题相关的对象的共同点,抽出与问题有关的共同点,形成问题对象模型(类)的过程。
这就叫抽象。
这个对象模型,在我们课中就叫类。
Eg :class Student{姓名学号性别爱好籍贯/*逛街无聊打游戏遛马路*/上课做作业缴费自我介绍//睡觉//吃饭。
}抽出的与问题有关的具有共同点的实体,在我们课中就叫对象。
Eg:Student 孔祥威 = new Student()//new 就是产生对象的运算符2、 封装:隐藏信息的具体实现细节的过程叫封装。
好处:A、信息隐藏、行为隐藏B、安全3、类模板、对象Eg:普通类class Student{String stuNO;String name;String sex;String intrest;String jiGuan;public Student(){="见不得人";this.sex="你懂得";this.intrest="你试试就知道了";this.jiGuan="不详";}public Student(String name,String sex,String aiHao, String jiGuan){this();=name;this.sex=sex;this.intrest=aiHao;this.jiGuan=jiGuan;}public void ShangKe(){}public void JiaoFei(){}public String toString(){return "我叫"++",我来自"+this.jiGuan+".我的爱好是"+this.intrest+"。
学号姓名实验序号实验四实验名称类和对象编程—面向对象特征实验地点实验日期实验内容1.设计3个类,分别学生类Student,本科生类Undergaduate,研究生类Postgraduate,学生类包含一些基本属性,如姓名、所学课程、课程成绩等,具有一个空方法getGrade();本科生类Undergaduate与研究生类Postgraduate继承学生类Student,都覆盖了父类的getGrade()方法,用于通过分数计算成绩的等级,计算方法不同,研究生的标准要比本科生的标准高一些,如下表所示。
要求对属性进行适当封装,通过方法来访问。
表课程成绩等级本科生标准研究生标准80--100优秀90—100优秀70--80良好80—90良好60--70一般70—80一般50--60及格60—70及格50以下不及格60以下不及格编写测试类,在测试类里创建Undergaduate与Postgraduate对象,计算他们的成绩,并输出他们的个人信息。
实验过程及步骤根据实验要求编写程序如下:class Student {private String name;private String course;private int score;public String getName() {return name;}public void setName(String name) { = name;}public String getCourse() {return course;}public void setCourse(String course) {this.course = course;}public int getScore() {return score;}public void setScore(int score) { this.score = score;}public String getGrade() {return"";}}class Undergaduate extends Student { Undergaduate(String _name, String_course, int _score) {setName(_name);setCourse(_course);setScore(_score);实验过程及步骤}public String getGrade() {int grade = getScore();if (grade >= 80)return ("优秀");if (grade >= 70)return ("良好");if (grade >= 60)return ("一般");if (grade >= 50)return ("及格");return ("不及格");}}class Postgraduate extends Student { Postgraduate(String _name, String _course, int _score) {setName(_name);setCourse(_course);setScore(_score);}public String getGrade() {int grade = getScore();if (grade >= 90)return ("优秀");if (grade >= 80)return ("良好");if (grade >= 70)return ("一般");if (grade >= 60)return ("及格");return ("不及格");}}public class Test {public static void main(String[] args) {Undergaduate a1 = new Undergaduate("张三", "JAVA", 80);Undergaduate a2 = new实验过程及步骤Undergaduate("李四", "JAVA", 60);Postgraduate b1 = newPostgraduate("王五", "JAVA", 90);System.out.println(a1.getName() + "的" + a1.getCourse() + "成绩为"+ a1.getGrade());System.out.println(b1.getName() + "的" + a1.getCourse() + "成绩为"+ a1.getGrade());System.out.println(a2.getName() + "的" + a2.getCourse() + "成绩为"+ a2.getGrade());}}得到结果:实验结果及分析教师评阅。