面向对象基础部分
- 格式:docx
- 大小:42.76 KB
- 文档页数:14
面向对象编程的基础理论与应用面向对象编程,简称OOP,是一种程序设计范式,是现代计算机程序设计的主流方法之一。
它将程序中的数据和函数封装在对象中,以对象为核心,实现代码的模块化和重用。
本文将介绍OOP的基础理论和应用。
一、面向对象编程的基础理论1.1. 类和对象类是面向对象编程的基本概念,它是一种用户自定义的数据类型,用于描述具有相同特征和行为的对象的抽象概念。
类具有属性和方法两种成员,属性用于描述对象的状态,而方法用于描述对象的行为。
例如,人类是一个类,拥有身高、体重、年龄、性别等属性,以及行走、说话、工作等方法。
对象是类的一个实例,是具有类定义的属性和方法的实体。
对象由类创建而来,可以看成是类的一种具体实现。
例如,小明是人类的一个对象,拥有身高170cm、体重60kg、年龄20岁、男性等属性,以及行走、说话、上学等方法。
1.2. 封装、继承和多态封装是指将数据和方法封装在对象中,对外部屏蔽对象的内部实现细节,只提供公共接口供外部使用。
封装允许程序员隐藏复杂性和保护代码不受外部干扰,提高程序的可维护性和安全性。
继承是指在已有类的基础上,创建一个新的类,新类可以继承原有类的属性和方法,并可以增加或修改其功能。
继承可以提高代码的重用,减少代码的冗余,同时还可以使程序的层次结构更为清晰。
多态是指在不同的对象上调用相同的方法,可以产生不同的结果。
它允许程序员使用一种统一的方式处理不同的对象,使程序更具灵活性和可扩展性。
二、面向对象编程的应用2.1. 程序的模块化和重用OOP的一大优势是可以将程序按照功能模块化,不同的模块之间可以独立地设计、编写和测试。
每个模块都是一个对象,可以单独进行维护或调试,这大大提高了程序的可维护性和可扩展性。
同时,OOP的封装和继承机制,也可以使代码的重用更为方便和高效。
2.2. 图形界面编程OOP特别适合于图形界面编程,因为图形界面程序需要处理大量的对象,例如窗口、按钮、文本框、标签等,每个对象都是一个类的实例。
面向对象部分测试题1.下面描述函数重写错误的是CA. 要有子类继承或实现B. 子类方法的权限必须大于等于父类的权限C. 父类中被private权限修饰的方法可以被子类重写D. 子类重写接口中的抽象方法,子类的方法权限必须是public的2.关于封装下面介绍错误的是(D )。
A. 封装将变化隔离B. 封装提高重用性。
C. 封装安全性D. 只有被private修饰才叫做封装3.试图编译运行下面的代码会发生什么情况Dpublic class MyClass{static int i;public static void main(String[] args){}}A. 错误,变量i没有被初始化B. 输出nullC. 输出1D. 输出04.在Java中,下面对于构造函数的描述正确的是( D)。
A. 类必须显式定义构造函数B. 构造函数的返回类型是voidC. 构造函数和类有相同的名称,并且不能带任何参数D. 一个类可以定义多个构造函数5.下面Java代码的运行结果是( C )。
class Penguin {private String name=null; 企鹅的名字是null,健康值是10,性别是雄。
B. 执行构造方法。
企鹅的名字是null,健康值是0,性别是null。
C. 企鹅的名字是null,健康值是0,性别是null。
D. 执行构造方法。
企鹅的名字是null,健康值是10,性别是雄。
6.class A {public int i = 10;}class B extends A{public int i = 20;}public class Test{public static void main(String args[]){B b = new B();A a = b;}}输出为多少 ( C)102010207.下面说法正确的是( D )。
A. 匿名内部类编译后不会生成.class文件B.接口编译后不会生成.class文件C. 抽象类中没有构造方法D. 局部内部类只能访问被final修饰的局部变量。
4.0 面向对象基础早期的语言开发思想,都是针对某一件事,而一步一步的来完成,称之为“面向过程开发”。
而面向对象是将某一件事,以一个整体的对象化进行考虑,按照不同的动作使用不同的方法来完成。
另外,面向对象可以认为是一种哲学的思想,将客观实体和实体之间的联系构成了现实世界的所有问题,而每一个实体都可以抽象为对象。
这种思想尽可能地按照人类认识世界的方法和思维方式来分析和解决问题,使人们分析、设计一个系统的方法尽可能接近认识一个系统的方法。
1.面向对象分析和设计面向对象的分析和设计(Object Orient Analysis & Design,OOAD)是现代软件企业广为采用的一项有效技术,其中包含了面向对象分析和面向对象设计两个方法。
OOAD方法要求在设计中要映射现实世界中指定问题域中的对象和实体,例如:乘客、公交汽车和售票员等。
这就需要设计要尽可能地接近现实世界,即以最自然的方式表述实体。
面向对象分析(OOA)是指利用面向对象的概念和方法为软件需求构造出关系模型,以使用户需求逐步明确、细化、一致性、完整性的分析过程。
分析的过程也是提取需求的过程,主要包括理解、表达和验证。
由于现实世界中存在的问题通常比较复杂,所以在分析过程中需要进行交流,并且也需要具有随意性和非形式化等特点。
而对于软件需求说明的正确性、完整性和有效性就需要进一步验证,以便及时加以修正。
面向对象分析中构造的模型主要分为对象模型、动态模型和功能模型。
其关键是识别出问题域中的对象,在分析它们之间相互关系之后建立起问题域的简洁、周详、可以理解的模型。
对象该模型通常由5个层次组成:类与对象层、属性层、服务层、结构层和主题层,如图3-1所示。
主题层类与对象层结构层属性层服务层图3-1 复杂问题的对象模型的这5个层次对应着在面向对象分析过程中,构造对象模型的5项主要活动,如发现对象、定义类、定义属性、定义服务、建立结构。
面向对象的分析过程如图3-2所示。
第6章【⾯向对象基础--中】理解封装的概念掌握权限修饰符的使⽤掌握成员变量的私有化掌握构造器的声明与使⽤会声明标准的JavaBean能够写出类的继承格式能够说出继承的特点能够说出⽅法重写的概念以及和重载的区别能够使⽤this关键字解决问题能够使⽤super关键字解决问题能够分析类初始化过程(为⾯试服务)能够分析实例初始化过程(为⾯试服务)能够应⽤多态解决问题理解向上转型与向下转型能够使⽤instanceof关键字判断对象类型了解native关键字掌握final关键字了解Object类的常⽤⽅法会重写Object的常⽤⽅法6.1 封装6.1.1 封装概述1我要⽤洗⾐机,只需要按⼀下开关和洗涤模式就可以了。
有必要了解洗⾐机内部的结构吗?有必要碰电动机吗?我们使⽤的电脑,内部有CPU、硬盘、键盘、⿏标等等,每⼀个部件通过某种连接⽅式⼀起⼯作,但是各个部件之间⼜是独⽴的现实⽣活中,每⼀个个体与个体之间是有边界的,每⼀个团体与团体之间是有边界的,⽽同⼀个个体、团体内部的信息是互通的,只是对外有所隐瞒。
⾯向对象编程语⾔是对客观世界的模拟,客观世界⾥每⼀个事物的内部信息都是隐藏在对象内部的,外界⽆法直接操作和修改,只能通过指定的⽅式进⾏访问和修改。
封装可以被认为是⼀个保护屏障,防⽌该类的代码和数据被其他类随意访问。
适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。
随着我们系统越来越复杂,类会越来越多,那么类之间的访问边界必须把握好,⾯向对象的开发原则要遵循“⾼内聚、低耦合”,⽽“⾼内聚,低耦合”的体现之⼀:⾼内聚:类的内部数据操作细节⾃⼰完成,不允许外部⼲涉;低耦合:仅对外暴露少量的⽅法⽤于使⽤隐藏对象内部的复杂性,只对外公开简单的接⼝。
便于外界调⽤,从⽽提⾼系统的可扩展性、可维护性。
通俗的讲,把该隐藏的隐藏起来,该暴露的暴露出来。
这就是封装性的设计思想。
2通俗的讲,封装就是把该隐藏的隐藏起来,该暴露的暴露出来。
面向对象分析与设计基础知识全掌握在软件开发领域,面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是一种广泛应用的方法论。
它以对象为核心,通过抽象、封装、继承和多态等特性,实现对软件系统的理解和构建。
本文将全面介绍面向对象分析与设计的基础知识,帮助读者全面掌握这一方法。
一、面向对象思想的基本概念面向对象思想是现代软件开发的基石,理解其中的基本概念对于深入学习面向对象分析与设计至关重要。
1.1 类和对象在面向对象的世界里,类是对象的抽象和模板,定义了对象的属性和行为。
类可以看作是一种数据类型的定义,它具有封装、继承和多态的特性。
而对象是类的实例,是具体的、可以被使用的实体。
1.2 封装封装(Encapsulation)指将数据和对数据的操作封装在一个类中,通过访问权限控制,隐藏对象的内部细节,仅向外部提供必要的接口。
封装提高了代码的安全性和复用性,减少了代码的耦合度。
1.3 继承继承(Inheritance)是面向对象编程中的重要概念,它允许我们创建新的类,从已存在的类中继承属性和方法。
继承可以提高代码的可扩展性和复用性,实现了代码的层次化组织。
1.4 多态多态(Polymorphism)是面向对象编程中的另一个重要概念,它允许不同类的对象对同一消息作出响应,实现了不同对象之间的互换使用。
多态提高了代码的灵活性和可维护性。
二、面向对象分析与设计的过程面向对象分析与设计是一种系统化的方法,它通过一系列步骤来分析和设计软件系统。
下面是面向对象分析与设计的基本过程。
2.1 需求获取需求获取是面向对象分析与设计的第一步,通过与用户沟通、分析文档等方式,准确地理解用户的需求和期望。
在这一阶段,我们需要收集用户需求并进行整理和分析。
2.2 需求分析需求分析是根据获取到的需求,进一步分析需求的优先级、相互关系和约束条件等。
通过需求分析,我们可以消除需求的模糊性和冲突,为后续的设计工作提供准确的依据。
面向对象编程知识点总结一、基本概念。
1. 对象(Object)- 对象是面向对象编程的核心概念。
它是一个具有状态(属性)和行为(方法)的实体。
例如,在一个汽车对象中,颜色、品牌是属性(状态),启动、刹车是方法(行为)。
- 对象可以看作是现实世界中事物的抽象模型。
2. 类(Class)- 类是对象的模板或蓝图。
它定义了对象的属性和方法。
例如,定义一个“Person”类,其中可以包含姓名、年龄等属性,以及走路、说话等方法。
- 类是一种抽象的数据类型,它描述了一组具有相同属性和行为的对象的共同特征。
3. 实例化(Instantiation)- 从类创建对象的过程称为实例化。
当我们实例化一个类时,就会得到一个该类的对象。
例如,`Person p = new Person();`(以Java语法为例),这里的`p`就是`Person`类的一个实例。
二、封装(Encapsulation)1. 概念。
- 封装是将数据(属性)和操作数据的方法(行为)捆绑在一起,并对外部隐藏对象的内部实现细节。
- 例如,在一个银行账户类中,账户余额是一个属性,存钱、取钱是方法。
外部只能通过这些方法来操作账户余额,而不能直接访问余额属性。
2. 访问修饰符。
- 在很多编程语言中(如Java),有不同的访问修饰符来控制类、属性和方法的访问权限。
- `public`:公共的,可以被任何类访问。
- `private`:私有的,只能在类内部访问。
- `protected`:受保护的,可以被本类及其子类访问。
三、继承(Inheritance)1. 概念。
- 继承允许创建一个新类(子类或派生类),从现有的类(父类或基类)继承属性和方法。
- 例如,有一个“Animal”类,它有属性“name”和方法“eat”。
然后定义一个“Dog”类继承自“Animal”类,“Dog”类除了继承“Animal”的属性和方法外,还可以有自己特有的属性(如品种)和方法(如汪汪叫)。
·类与对象
比如人:张三、李四、王二麻子,实实在在存在的,看得见摸得着。
比如人类:抽象的,概念上的共性的。
对象:实际存在的,是该类事物的每个个体,也称为类的实例,是个性类:规定的一个共性的东西,是抽象的,概念上的。
是共性的
翁家龙:个性的,具体的,需要依靠类
开发中重点放在类上面,因为类设计好了就等于设计好了千千万万个对象是先有对象还是先有类:先有类再有对象。
结论:类的格式:
classs 类名称{
属性;
方法;
}
对象的引用传递:
面向对象的特征:
·继承
·封装
·多态
封装:使用private实现类的封装,使用private修饰的属性不能被外部访问,private修饰的方法也不能被外部访问。
现在类中的属性和方法都被封装了,外部不能访问了,那么为什么需要封装呢?
从以上的代码中可以发现,封装的好处在于:·安全性
·可以进行校验
匿名对象:没有名字,只使用一次的对象
构造方法:用于构造对象的方法
构造方法的两个特点:
·无任何返回值类型
·方法名称必须与类重名
通过以上程序发现,对象实例化的时候都会去调用类的构造方法,如果类中没有写任何的构造方法,那么会默认的去调用一个什么都不做的构造方法。
方法的重载:在一个类中,方法名称相同,参数的个数、类型、顺序不同,实现不同的功能。
通过以上的程序发现,构造方法能够重载,普通方法也能够重载。
this关键字的使用:
·this关键字可以调用当前类的属性
·this关键字可以调用当前类的方法
·this关键字可以调用当前类的构造方法
·this关键字可以表示当前对象
范例:使用this关键字调用当前类的构造方法
this关键字在调用当前类的构造方法的时候必须放在构造方法的首行。
this表示当前对象一般用于对象比较。
static关键字的用法:
static变量的声明和使用
static方法的声明和使用
static代码块的使用
static变量的声明和使用。
圣旨:static声明的变量可以被static声明的方法可以调用,但是非static变量不能被static 方法调用
static方法的声明和使用。
圣旨:static声明的方法可以调用static声明的方法,但是非static声明的方法不能被static 声明的方法调用。
全局代码区:使用static修饰的方法
全局数据区:使用static修饰的变量
之前我们去调用属性和方法的时候:对象.属性,对象.方法()
代码块:使用一对{}包围起来的代码就是代码块
·普通的代码块:写在普通方法中的代码
·构造块(实例块):直接写在一个类中的语句,使用{}包围,在实例化对象的时候构造块优先于构造方法执行,在实例化多个对象的时候执行多次
·静态块:直接写在类中,使用一对{}包围,只是用static声明,在实例化对象优先于构造块执行,在实例化多个对象的时候静态块只执行一次
·同步块:不讲(讲到多线程的时候再说)
main方法是java程序运行的入口
public :此方法是公有的方法,可以被外部程序直接访问
static:此方法是静态的方法可以通过类名直接访问
void:表示此方法无返回值
main:方法的名称
方法:一段可以重复调用的代码称之为方法
方法的定义:public|private|protected|default (static|native|synchro。
)返回值类型方法名称(参数1,参数2.。
) throws Exception{
方法体
}
方法的调用:
·对象.方法()用于非静态方法
·类名.方法名() 静态方法的调用
形式参数:形参
实际参数:实参
练习:用数组存储对象,进行对象数组的查找。
答:。