当前位置:文档之家› 面向对象1

面向对象1

面向对象基础_参考题答案

一、【必做题】 1.(1)定义一个人类Person: 1)定义一个方法sayHello(),可以向对方发出问候语“hello,my name is XXX” 2)有三个属性:名字、身高、体重 (2)定义一个PersonCreate类: 1)创建两个对象,分别是zhangsan,33岁,1.73;lishi,44,1.74 2)分别调用对象的sayHello()方法。(答案:Person.java、PersonCreate.java)2.(1)定义一个人类Person: 1)定义一个方法sayHello(),可以向对方发出问候语“hello,my name is XXX” 2)有三个属性:名字、身高、体重 3)通过构造方法,分别给三个属性赋值 (2)定义一个Constructor类: 1)创建两个对象,分别是zhangsan,33岁,1.73;lishi,44,1.74 2)分别调用对象的sayHello()方法。(答案:Constructor.java、或者是Person3.java)3.(1)定义一个矩形类Rectangle: 1)定义三个方法:getArea()求面积、getPer()求周长,showAll()分别在控制台输出长、宽、面积、周长。 2)有2个属性:长length、宽width 3)通过构造方法Rectangle(int width, int length),分别给两个属性赋值(答案:Rectangle.java) 4.定义一个点类Point,包含2个成员变量x、y分别表示x和y坐标,2个构造器Point()和Point(int x0,y0),以及一个movePoint(int dx,int dy)方法实现点的位置移动。() public class Point { private int x0; private int y0; public Point() { } public Point(int x0,int y0) { t his.x0=x0; this.y0=y0; } public void movePoint(int dx,int dy){ t his.x0 = this.x0 + dx; t his.y0 = this.y0 + dy; } } 5.编写一个程序,创建两个Point对象p1、p2,分别调研movePoint方法后,打印p1和p2的坐标。 public class Point { private int x0; private int y0; public Point()

1.面向对象概述

面向对象概述0.英语单词 1.课程介绍

2.面向过程编程和面向对象编程 1)面向对象是相对面向过程而言,两者都是编程思想。 2)面向过程强调的是功能行为,程序的实现是基于一个一个功能的实现;而面向对象强 调的是将功能封装进对象,程序的实现是基于对象的之间的消息传递。 3)面向对象是基于面向过程的,也就是说面向对象是在面向过程的基础上发展起来的。 4)面向过程程序设计中,程序的构成主体是一个一个的方法,而面向对象的程序设计中, 程序的构成主体是一个一个的类(生成对象的原型) 实例: ---------------------------------- 3.面向对象思想的特点 是一种符合人类思考或做事的习惯的思想,可以将复杂的事情简单化; 将程序员从执行者转换成了指挥者,不是将一件事情拆分完成,而是找到具有所需功能的对象来用,如果对象不存在,那么就创建一个具有所需功能的对象。 实例: --------------------------------------- 4.面向对象开发、设计的特征 设计的过程:其实就是在管理和维护对象之间的关系 开发的过程:其实就是在不断的创建对象,使用对象,指挥对象做事情 特征: 抽象abstract 封装encapsulation 继承inheritance 多态polymorphism ----------------------------------- 5.如何发现对象(抽象) 我们认识事物的过程一般是这样的:这是什么?有什么样的特征?能够做什么?所以,从现实中抽象出类分为三步: 1)找出它的种类?是什么?找(简单)名词 2)找出它的属性?有什么特征?找(修饰性)名词、形容词 3)找出它的行为?能够做什么?找动词 4)方法放的位置,那个类最清楚,就放在那个类中 5)只找关心的 实例1:美女 Gril 颜值:非常漂亮 实例2:帅哥钟打开玻璃门 人 姓:钟 性别:男

面向对象基础_参考答案

一、【必做题】 Ⅰ.选择题 1、列选项中哪个是类public class T est { }的默认构造方法__C__? A. T est(); B. T est(void); C. public T est(); D. public T est(void); E. public void T est(); 2、给定下列代码的执行结果是_E___? public class A { void A() { System.out.println(“Class A”); } public static void main(String[] args) { new A(); } } A. Class A B. 在第2行处抛出异常 C. 编译错误 D. 在第6行处抛出异常 E. 代码执行后没有输出 ***3、给定以下代码: 1. public class ConstOver { 2. public ConstOver (int x, int y, int z) { 3. } 4. } 下列选项中,哪些可以在ConsOver类中定义成重载的构造方法___AC_: A. ConstOver ( ) { } B. int ConstOver ( ) { } C. ConstOver (int z, int y, byte x) { } D. Object ConstOver (int x, int y, int z) { } E. void ConstOver (byte x, byte y, byte z) { } 4、以下代码的执行结果是__A___?//Illegal modifier for parameter i; only final is permitted

面向对象基础部分

·类与对象 比如人:张三、李四、王二麻子,实实在在存在的,看得见摸得着。 比如人类:抽象的,概念上的共性的。 对象:实际存在的,是该类事物的每个个体,也称为类的实例,是个性类:规定的一个共性的东西,是抽象的,概念上的。是共性的 翁家龙:个性的,具体的,需要依靠类 开发中重点放在类上面,因为类设计好了就等于设计好了千千万万个对象是先有对象还是先有类:先有类再有对象。 结论:类的格式: classs 类名称{ 属性; 方法; }

对象的引用传递: 面向对象的特征: ·继承 ·封装 ·多态 封装:使用private实现类的封装,使用private修饰的属性不能被外部访问,private修饰的方法也不能被外部访问。 现在类中的属性和方法都被封装了,外部不能访问了,那么为什么需要封装呢?

从以上的代码中可以发现,封装的好处在于:·安全性 ·可以进行校验 匿名对象:没有名字,只使用一次的对象 构造方法:用于构造对象的方法 构造方法的两个特点: ·无任何返回值类型 ·方法名称必须与类重名

通过以上程序发现,对象实例化的时候都会去调用类的构造方法,如果类中没有写任何的构造方法,那么会默认的去调用一个什么都不做的构造方法。

方法的重载:在一个类中,方法名称相同,参数的个数、类型、顺序不同,实现不同的功能。

通过以上的程序发现,构造方法能够重载,普通方法也能够重载。 this关键字的使用: ·this关键字可以调用当前类的属性 ·this关键字可以调用当前类的方法 ·this关键字可以调用当前类的构造方法 ·this关键字可以表示当前对象 范例:使用this关键字调用当前类的构造方法

java面向对象的概述

1 类的定义 /* 手机事物: 属性:品牌,价格,颜色... 行为:打电话,发短信,玩游戏... 手机类: 成员变量:品牌,价格,颜色 成员方法:打电话,发短信,玩游戏 */ class Phone { //品牌 String brand; //价格 int price; //颜色 String color; //打电话的方法 public void call(String name) { System.out.println("给"+name+"打电话"); } //发短信的方法 public void sendMessage() { System.out.println("群发短信");

//玩游戏的方法 public void playGame() { System.out.println("玩游戏"); } } 2 手机类测试 /* 手机类的测试 */ class Phone { //品牌 String brand; //价格 int price; //颜色 String color; //打电话的方法 public void call(String name) { System.out.println("给"+name+"打电话"); } //发短信的方法 public void sendMessage() { System.out.println("群发短信");

//玩游戏的方法 public void playGame() { System.out.println("玩游戏"); } } class PhoneDemo { public static void main(String[] args) { //创建手机对象 //类名对象名 = new 类名(); Phone p = new Phone(); //直接输出成员变量值 System.out.println(p.brand+"---"+p.price+"---"+p.color); //给成员变量赋值 p.brand = "诺基亚"; p.price = 100; p.color = "灰色"; //再次输出 System.out.println(p.brand+"---"+p.price+"---"+p.color); //调用方法 p.call("林青霞"); p.sendMessage();

面向对象程序设计概述

1.什么是结构化程序设计方法?这种方法有哪些优点和缺点? 【解答】结构化程序设计方法是指20世纪60年代开始出现的高级语言程序设计方法,由于采用了数据结构化、语句结构化、数据抽象和过程抽象等概念,使程序设计在符合客观事物与逻辑的基础上更进了一步。结构化程序设计的思路是:自顶向下、逐步求精。程序结构由具有一定功能的若干独立的基本模块(单元)组成,各模块之间形成一个树状结构,模块之间的关系比较简单,其功能相对独立,模块化通过子程序的方式实现。结构化程序设计方法使高级语言程序设计开始变得普及,并促进了计算机技术的深入应用。 虽然结构化程序设计方法采用了功能抽象、模块分解与组合,以及自顶向下、逐步求精的方法,能有效地将各种复杂的任务分解为一系列相对容易实现的子任务,有利于软件开发和维护;但与面向对象程序设计方法相比,结构化程序设计存在的主要问题是,程序的数据和对数据的操作相互分离,若数据结构改变,程序的大部分甚至所有相关的处理过程都要进行修改。因此,对于开发大型程序具有一定的难度,软件的可重用性差,维护工作量大,不完全符合人类认识世界的客观规律。 2.面向对象程序设计有哪些重要特点? 【解答】软件设计的目的是为了解决日常生活中存在的各种实际问题,面向对象程序设计与以往各种程序设计方法的根本区别是程序设计的思维方法的不同。它主要具有如下重要特点: (1)面向对象程序设计实现了较直接地描述客观世界中存在的事物(即对象)及事物之间的相互关系,它所强调的基本原则是直接面对客观事物本身进行抽象,并在此基础上进行软件开发,将人类的思维方式与表达方式直接应用在软件设计中。 (2)面向对象的程序设计将客观事物看作具有属性和行为的对象,通过对客观事物进行抽象来寻找同一类对象的共同属性(静态特征)和行为(动态特征),并在此基础上形成类。 (3)面向对象的程序设计将数据和对数据的操作封装在一起,提高了数据的安全性和隐蔽性。

面向对象方法学概述资料

9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型 9.6 功能模型 9.7 3种模型之间的关系 传统的软件工程方法学曾经给软件产业带来巨大进步,部分地缓解了软件危机,使用这种方法学开发的许多中、小规模软件项目都获得了成功。但是,人们也注意到当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功。 在20世纪60年代后期出现的面向对象编程语言Simula-67中首次引入了类和对象的概念,自20世纪80年代中期起,人们开始注重面向对象分析和设计的研究,逐步形成了面向对象方法学。到了20世纪90年代,面向对象方法学已经成为人们在开发软件时首选的范型。面向对象技术已成为当前最好的软件开发技术。 9.1 面向对象方法学概述 9.1.1 面向对象方法学的要点 面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。 面向对象方法学所提供的“对象”概念,是让软件开发者自己定义或选取解空间对象,然后把软件系统作为一系列离散的解空间对象的集合。应该使这些解空间对象与问题空间对象尽可能一致。这些解空间对象彼此间通过发送消息而相互作用,从而得出问题的解。也就是说,面向对象方法是一种新的思维方法,它是把程序看作是相互协作而又彼此独立的对象的集合。

概括地说,面向对象方法具有下述4个要点: (1) 认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。按照这种观点,可以认为整个世界就是一个最复杂的对象。因此,面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。 由此可见,面向对象方法用对象分解取代了传统方法的功能分解。 (2) 把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息。因此,每当建立该对象类的一个新实例时,就按照类中对数据的定义为这个新对象生成一组专用的数据,以便描述该对象独特的属性值。 (3) 按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。在这种层次结构中,通常下层的派生类具有和上层的基类相同的特性(包括数据和方法),这种现象称为继承(inheritance)。 (4) 对象彼此之间仅能通过传递消息互相联系。对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体,必须发消息请求它执行它的某个操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作。 重点:如果仅使用对象和消息,则这种方法可以称为基于对象的(object-based)方法,而不能称为面向对象的方法;如果进一步要求把所有对象都划分为类,则这种方法可称为基于类的(class-based)方法,但仍然不是面向对象的方法。只有同时使用对象、类、继承和消息的方法,才是真正面向对象的方法。 9.1.2 面向对象方法学的优点 1. 与人类习惯的思维方法一致 2. 稳定性好 3. 可重用性好(重点) 用已有的零部件装配新的产品,是典型的重用技术,例如,可以用已有的预制件建筑一幢结构和外形都不同于从前的新大楼。重用是提高生产率的最主要的方法。

面向对象基础练习

1 定义员工类 /* 需求: 定义一个员工类,自己分析出几个成员, 然后给出成员变量,构造方法,getXxx()/setXxx()方法, 以及一个显示所有成员信息的方法。并测试。 分析: 员工 成员变量: 员工编号,姓名,年龄 构造方法: 无参构造方法 成员方法: getXxx()/setXxx() show(); */ class Employee { //员工编号 private String employeeId; //姓名 private String name; //年龄 private int age; //构造方法

public Employee() {} //getXxx()/setXxx() public String getEmployeeId() { return employeeId; } public void setEmployeeId(String employeeId) { this.employeeId = employeeId; } public String getName() { return name; } public void setName(String name) { https://www.doczj.com/doc/318765465.html, = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } //显示所有成员信息的方法 public void show() {

System.out.println("员工编号是:"+employeeId+"的这个人是: "+name+"的年龄是:"+age); } } class EmployeeTest { public static void main(String[] args) { //创建对象 Employee e = new Employee(); //给成员变量赋值 e.setEmployeeId("czbk9527"); e.setName("唐伯虎"); e.setAge(18); //获取数据 //System.out.println(e.getEmployeeId()+"---"+e.getName()+"--- "+e.getAge()); //我们在Employee类中定义了一个show方法。所以,我们改进一下,使用show方法 e.show(); } } 2 定义MYMATH /* 定义一个类MyMath,提供基本的加减乘除功能,然后进行测试。 */ import java.util.Scanner;

第1章面向对象程序设计概述

第1章面向对象程序设计概述 近年来,面向对象程序设计的思想已经被越来越多的软件设计人员所接受。它是在吸收结构化程序设计的一切优点的基础上发展起来的一种新的程序设计思想。这种新的思想更接近人的思维活动,人们利用这种思想进行程序设计时,可以很大程度地提高编程能力,减少软件维护的开销。面向对象系统最突出的特点是封装性、继承性和多态性。 1.1什么是面向对象程序设计 在软件设计和实现中,传统的被人们广泛使用的方法是面向过程的程序设计方法。在讨论面向对象程序设计之前,我们需要讨论一下面向过程的程序设计。 1.1.1面向过程程序设计的基本概念 面向过程的程序设计思想的核心是功能的分解: 第一步要做的工作就是将问题分解成若干个称为模块的功能块; 第二步根据模块功能来设计一系列用于存储数据的数据结构; 第三步编写一些过程(或函数)对这些数据进行操作。 显然,这种方法将数据结构和过程作为两个实体来对待,其着重点在过程。 设计人员首先考虑如何将功能分解,在每一个过程中又要着重安排程序的操作序列,但同时程序员在编程时又必须时时考虑数据结构,因为毕竟要将操作作用于数据上。数据结构和过程的这种分离,给软件人员造成沉重的负担。例如,我们不可能要求数据结构始终没有变化,且不说在软件维护的时候数据结构有可能发生变化,就是在软件开发的过程中也不能保证数据结构不变化。 面向过程的程序设计的缺点之一就是一旦数据结构需要变更的时候,必须修改与之有关的所有模块。因此,面向过程的程序的可重用性差,维护代价高。 下面,我们举一个实例来进一步讨论面向过程的程序设计方法。 考虑一个银行系统。该系统允许顾客开设不同类型的银行账户,其中包括现金账户、支票账户和贷款账户,同时允许顾客存款、取款和转账。根据面向过程的程序设计方法,首先我们将银行系统分解成三个模块分别负责存款、取款和转账三项工作。这三个过程是MakeDeposit、WithDraw和Transfer。接着,建立一个简单的数据结构: struct account{ char name; /* 姓名 */ unsigned long accountld; /* 账号 */ float balance /* 余额 */ float interestYTD /* 年利息 */ char accountType./*账户类型(现金、支票和贷款) */ }; 然后,对每个过程按照一定的操作顺序编写程序。 我们来分析一下,程序员所关心的是否与顾客一致。 (1)对于一个顾客来说,他最关心的是账户中还有多少钱,利息是多少,钱存在银行是否安全,而不会对存钱和取钱的程序执行的过程感兴趣。对他而言,只是需要知道存、取款

面向对象复习题

第一部分面向对象方法概述 一、填空题 1.对象的抽象是,类的实例是。 2.动态模型描述了系统的结构。 3.软件系统中存在两种控制流,外部控制流是系统中对象之间外部事件的事件流, 有、和三种外部事件控制流。控制流是一个处理内 部的控制,均可结构化。 4.在C++和C中有一个函数,可以使用这个过程来说明构成系统主要对象 的那些类的实例。 5.继承性是自动共享父类属性和的机制。 6.对象具有封装性,实现了的组合。 7.在面向对象方法中,信息隐藏通过对象的来实现。类结构分离了 和,从而支持了信息隐藏。 8.抽象是指强调实体的、,忽略一些无关紧要的属性。类实现了对象 的和的抽象,它是对象的共性的抽象。 9.子类只继承的属性和操作,称为单重继承。 10.对象的抽象是,类的具体化就是,也可以说类的实例 是。 11.类具有,它是的行动的抽象。 12.对象具有状态,对象用来描述它的状态。 13.概念模型描述了系统的。功能模型指出,动态模型确定, 而对象模型确定。功能模型由组成。 14.面向对象有三个基本要素,它们是、、。 15.面向对象技术在三个级别上促进了共享,它们是、、。 16.活动是一种有时间间隔的操作,它是依附于。动作是一种瞬时操作,它 是与联系在一起的操作。 17.封装性是指所有软件部件内部都有明确的以及清楚的。每个软 件部件都有友好的,软件部件的与分离。 18.主要的对象类型有、、和。 19.同一个类中的共享是指同一个类中的对象有着相同的和相同 的。 20.结构化方法的本质是,其、可修改性和可重用性都比较差。 21.对象还有,用于改变对象的状态。对象实现了和的 结合。 22.面向对象方法认为系统是由应用域的组成。 23.对象具有状态,描述对象的状态用它的。 24.类具有属性,描述类的属性用。 25.一个方法有、和。 26.动态模型描述了系统的。 27.对象模型的主要元素是类,关联和。 28.通过这种机制和构造来实现不同应用中的信息共享。 29.面向对象程序设计语言与其它程序设计语言的主要区别是它具有。 30.对象具有很强的能力和功能。

面向对象的三个基本特征和概念

面向对象的三个基本特征(讲解) 面向对象的三个基本特征是:封装、继承、多态。 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 继承 面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。 继承的过程,就是从一般到特殊的过程。 要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。 在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。 继承概念的实现方式有三类:实现继承、接口继承和可视继承。 实现继承是指使用基类的属性和方法而无需额外编码的能力; 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力; 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类都可以继承 Person 类。但是 Leg 类却不能继承 Person 类,因为腿并不是一个人。 抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字 Interface 而不是 Class。 OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。 多态 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。 实现多态,有二种方式,覆盖,重载。 覆盖,是指子类重新定义父类的虚函数的做法。 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。 其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、 str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:是静态)。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!真正和多态相关的是“覆盖”。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚邦定)。结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚邦定,它就不是多态。” 那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。

面向对象复习题

第一部分面向对象方法概述 、填空题 1. 对象的抽象是______________,类的实例是 _____________ 。 2. 动态模型描述了系统的_______________ 结构。 3. 软件系统中存在两种控制流,外部控制流是系统中对象之间外部事件的事件流, 有________ 、 _________和_________ 三种外部事件控制流。____________ 控制流是一个处理内 部的控制,均可结构化。 4. 在C++和C中有一个_____________ 函数,可以使用这个过程来说明构成系统主要对象 的那些类的实例。 5. 继承性是_________ 自动共享父类属性和______________ 的机制。 6. 对象具有封装性,实现了_____________ 的组合。 7. 在面向对象方法中,信息隐藏通过对象的_____________ 来实现。类结构分离了 和________ ,从而支持了信息隐藏。 8. 抽象是指强调实体的_____________ 、_______ ,忽略一些无关紧要的属性。类实现了对象 的______ 和 _______ 的抽象,它是对象的共性的抽象。 9. 子类只继承的属性和操作,称为单重继承。 10. 对象的抽象是________________ ,类的具体化就是 ________________ ,也可以说类的实例 11. 类具有_________ ,它是 ________ 的行动的抽象。 12. 对象具有状态,对象用____________ 来描述它的状态。 13. 概念模型描述了系统的。功能模型指出,动态模型确定__________ , 而对象模型确定______________ 。功能模型由 ______________ 组成。 14. 面向对象有三个基本要素,它们是__________________ 、___________ 、____________ 。 15. 面向对象技术在三个级别上促进了共享,它们是____________ 、__________ 、__________ 。 16. 活动是一种有时间间隔的操作,它是依附于_____________________ 。动作是一种瞬时操作,它 是与___________ 联系在一起的操作。 17. 封装性是指所有软件部件内部都有明确的____________________ 以及清楚的___________ 。每个软 件部件都有友好的______________ ,软件部件的____________ 与______________ 分离。 18. 主要的对象类型有______________ 、__________ 、__________ 和。 19. 同一个类中的共享是指同一个类中的对象有着相同的_____________________________________ 和相同 的_____________ 。 20. 结构化方法的本质是_________________ ,其 ___________ 、可修改性和可重用性都比较差。 21. 对象还有_____________,用于改变对象的状态。对象实现了_____________ 和____________ 的 结合。 22. 面向对象方法认为系统是由应用域的___________________ 组成。 23. 对象具有状态,描述对象的状态用它的______________________ 。 24. 类具有属性,描述类的属性用一 25. 一个方法有____________ 、___________ 禾廿__________ 。 26. 动态模型描述了系统的________________ 。 27. 对象模型的主要元素是类,关联和_____________________ 。 28. 通过___________ 这种机制和构造来实现不同应用中的信息共享。 29. 面向对象程序设计语言与其它程序设计语言的主要区别是它具有__________ 。

2_面向对象基础测试题和答案教学文稿

共40道选择题,每题2.5分。多选题有错则全错,全对才满分. 面向对象部分测试题 1.下面描述函数重写错误的是C A. 要有子类继承或实现 B. 子类方法的权限必须大于等于父类的权限 C. 父类中被private权限修饰的方法可以被子类重写 D. 子类重写接口中的抽象方法,子类的方法权限必须是public的 2.关于封装下面介绍错误的是(D )。 A. 封装将变化隔离 B. 封装提高重用性。 C. 封装安全性 D. 只有被private修饰才叫做封装 3.试图编译运行下面的代码会发生什么情况D public class MyClass{ static int i; public static void main(String[] args){ System.out.println(i); } } A. 错误,变量i没有被初始化 B. 输出null C. 输出1 D. 输出0 4.在Java中,下面对于构造函数的描述正确的是(D)。 A. 类必须显式定义构造函数 B. 构造函数的返回类型是void C. 构造函数和类有相同的名称,并且不能带任何参数

D. 一个类可以定义多个构造函数 5.下面Java代码的运行结果是(C )。 class Penguin { private String name=null; // 名字 private int health=0; // 健康值 private String sex=null; // 性别 public void Penguin() { //是一般方法,不是构造方法health = 10; sex = "雄"; System.out.println("执行构造方法。"); } public void print() { System.out.println("企鹅的名字是" + name + ",健康值是" + health + ",性别是" + sex+ "。"); } public static void main(String[] args) { Penguin pgn = new Penguin(); pgn.print(); } } A. 企鹅的名字是null,健康值是10,性别是雄。 B. 执行构造方法。 企鹅的名字是null,健康值是0,性别是null。 C. 企鹅的名字是null,健康值是0,性别是null。 D. 执行构造方法。 企鹅的名字是null,健康值是10,性别是雄。 6.class A { public int i = 10; }

UML面向对象分析与建模-【1】面向对象技术概述

常见的软件开发方法有面向过程的开发方法,面向数据结构的开发方法和面向对象的开发方法。其中面向过程的开发方法也称为面向功能的软件开发方法或面向数据流的软件开发方法。结构化方法强调过程抽象和功能模块化。它一般利用图形表达用户需求,使用的手段有数据流图、数据字典、结构化语言、判定表及判定树等。面向数据结构的开发方法适合于求解算法依赖于问题描述的数据结构之类的情况。这种方法最适合在完成了软件结构设计之后,用它来设计每个模块的处理过程。它根据问题的数据结构定义一组映射,把问题的数据结构转换为问题求解的程序结构。面向对象开发方法思想是:对问题空间进行自然分割,以更接近人类思维的方式建立问题域模型,以便对客观实体进行结构模拟和行为模拟,从而使设计出的软件尽可能直接地描述现实世界,构造出模块话的,可重用的,维护性好的软件,同时限定软件的复杂性和降低开发维护费用。它是通过面向对象的分析(OOA)、面向对象的设计(OOD)和面向对象的程序设计(OOP)等过程,将现实世界的问题空间平滑地过渡到软件空间的一种软件开发过程。目前,典型的面向对象的开发方法是UML和统一开发过程(RUP)。 软件生命周期是指软件从立项、功能确定、设计,到开发成功投入使用,并在使用过 软件开发模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。分为:瀑布模型、原型模型、螺旋模型、增量模型和喷泉(迭代)模型。 面向对象的方法学可以概括为下列方程:OO=Object+Classes+Inheritance+Communication with Messages 也就是说面向对象就是既使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。 面向对象分析的关键,是识别出问题域内的对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。分析就是抽取和整理用户需求并建立问题域精确模型的过程。基本步骤有问题域分析、发现和定义对象和类、识别对象的外部联系、建立系统的静态结构模型和建立系统的动态行为模型。 面向对象设计是把分析阶段的需求转变成符合成本和质量要求的、抽象的系统实现方案过程。细分为系统设计和对象设计。设计准则包括模块化、抽象、信息隐藏、弱耦合、强内聚和可重用。设计过程包括设计对象和类、设计系统结构、设计问题域子系统、设计人-机交互子系统、设计任务管理子系统、设计数据管理子系统和设计优化。 面向对象方法主要有Booch、Jacobson、Coad-Yourdon、James Rumbauth开发方法。已发展成当前最流行的系统分析方法和软件开发技术,并且已经逐步统一、融合形成UML语言。

面向对象基础

第13章三层架构程序设计实例 13.1 面向对象的程序设计方法 所谓面向对象的程序设计是指将所有问题都看成“对象”,每个对象根据其性质不同又归属于不同的“类”。在程序设计时开发人员可通过“事件驱动机制”调用对象的“属性”、“方法”和“事件”来实现设计目标。 13.1.1 类和对象的概念 现实生活中的类是人们对客观对象不断认识而产生的抽象的概念,而对象则是现实生活中的一个个实体。例如,人们在现实生活中接触了大量的汽车、摩托车、自行车等实体,从而产生了交通工具的概念,交通工具就是一个类,而现实生活中的具体的汽车、摩托车、自行车等,则是该类的对象。 面向对象程序设计的类概念从本质上和人们现实生活中的类概念是相同的。例如在编程实践中,人们经常使用按钮(Button)控件,每一个具体的按钮是一个按钮对象,而按钮类则是按钮对象的抽象,并且人们把这一抽象用计算机编程语言表示为数据集合与方法集合的统一体,然后再用这个类创建一个个具体的按钮对象。 可以把类比作一种蓝图,而对象则是根据蓝图所创建的实例,可以把类比作生产模具,而对象则是由这种模具产生的产品(实例)。所以人们又把对象叫做类的实例。类是对事物的定义,而对象则是该事物本身。 在Visual Studio集成开发环境的工具箱中,所有的控件都是被图形文字化的,可视的类,而把这些控件添加到窗体设计器中后,窗体设计器中的控件则是对象,即由工具箱中的类创 建的对象。在C#中,类以图标表示,普通对象以图标表示。 类是一种数据类型,这种数据类型将数据与对数据的操作作为一个统一的整体来定义,类的这种特点叫封装性。在C#中,类这种数据类型可以分为两种:一种是由系统提供的预先定义的,这些类在.NET框架类库中;一种是用户定义数据类型。在创建对象之前必须先定义该对象所属的类。然后由类声明对象。 对象通过类进行声明,由于类本质上是一种数据类型,所以用类声明对象的方法与用基本数据类型声明变量的方法基本相同。事实上,在Visual Studio中像int、float等基本数据类型也是特殊的类。那么,用基本数据类型可以声明变量,用类也可以声明变量,只不过用类声明的变量叫类的对象或类的实例。用同一个类可以声明无数个该类的对象,这些对象具有相同的数据,相同的数据操作方法,所不同的仅仅是数据的具体值。正如只要是人,就具有人所具备的共同特点,如身高、体型等,不同的仅仅是高矮胖瘦等个体数据而已。

2-面向对象基础测试题和答案

2-面向对象基础测试题和答案

共40道选择题,每题2.5分。多选题有错则全错,全对才满分. 面向对象部分测试题 1.下面描述函数重写错误的是C A. 要有子类继承或实现 B. 子类方法的权限必须大于等于父类的权限 C. 父类中被private权限修饰的方法可以被子类重写 D. 子类重写接口中的抽象方法,子类的方法权限必须是public的 2.关于封装下面介绍错误的是(D )。 A. 封装将变化隔离 B. 封装提高重用性。 C. 封装安全性 D. 只有被private修饰才叫做封装 3.试图编译运行下面的代码会发生什么情况D public class MyClass{ static int i;

private int health=0; // 健康值private String sex=null; // 性别public void Penguin() { //是一般方法,不是构造方法 health = 10; sex = "雄"; System.out.println("执行构造方法。"); } public void print() { System.out.println("企鹅的名字是" + name + ",健康值是" + health + ",性别是" + sex+ "。"); }

public static void main(String[] args) { Penguin pgn = new Penguin(); pgn.print(); } } A. 企鹅的名字是null,健康值是10,性别是雄。 B. 执行构造方法。 企鹅的名字是null,健康值是0,性别是null。 C. 企鹅的名字是null,健康值是0,性别是null。 D. 执行构造方法。 企鹅的名字是null,健康值是10,性别是雄。 4.c lass A { public int i = 10; } class B extends A{

面向对象基础

面向对象 利用java语言进行问题求解的基本思想是分析需要求解的问题,从中提取需要设计的对象,然后编写这些对象所对应的类,最后通过集成这些对象的功能解决需要求解的问题。这就是面向对象程序设计的基本思想。在这个过程中,可以对这些类型进行归类,找出可以归类的类型,形成对应的接口或者抽象类,让这些类成为所定义的接口或抽象类的子类型。 几个基础算法 选择: 冒泡: 二分:

翻转: 代码块 局部代码块 在程序执行中顺序不变,只是在执行完成后变量data消失。减少变量的生命周期 构造代码块 构造函数:构造函数的作用是给对应的对象进行初始化。 构造代码块:构造代码块的作用是给所有的对象进行统一初始化,将所有构造方法中公共的信息进行抽取。如果有多个构造方法,可以把通用的步骤写在构造代码块里。 构造代码块的实现方式: { 构造代码块 } 构造代码块比构造函数先执行 构造代码块要注意细节: 1. 构造函数的代码是位于成员变量的显式初始化、构造代码块之后执行的。(不管构造函数代码的位置如何摆放) 2 . 成员变量的定义语句经过java编译器编译之后,声明变量的语句会被提前。 3. 其实构造代码块的代码是在构造函数里面执行的。(重点) 4. 构造代码块的代码与成员变量的显式初始化动作的先后顺序是根据当前的代码顺序而决定的。 javap -c -l -private

静态代码块 静态代码块: 静态代码块的代码是在class文件加载的时候调用的,由于只加载一次,所以就算创建多个对象也只调用一次。优先于main函数执行 访问权限 访问权限类包子类其他包 public ∨∨∨∨ protect ∨∨∨× default ∨∨×× private ∨××× 注意:在不同包中只有public、protected两个访问权限修饰符修饰的内容才可以访问,而且protected必须要在继承关系下才可以访问。 重写与重载 重载:在同一个类中,有一个以上函数的名字相同,只要函数的参数列表或参数类型不一样

相关主题
文本预览
相关文档 最新文档