导航:首页 > 编程语言 > 面向对象编程oop

面向对象编程oop

发布时间:2022-07-29 05:10:51

java中的OOA.OOD.OOP有什么区别

一、指代不同

1、OOA:面向对象分析方法,是确定需求或者业务的角度,按照面向对象的思想来分析业务。

2、OOD:面向对象设计方法是OO方法中一个中间过渡环节。其主要作用是对OOA分析的结果作进一步的规范化整理,以便能够被OOP直接接受。

3、OOP:面向对象程序设计作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。

二、规则不同

1、OOA:只是对需求中描述的问题,进行模块化的处理,描述问题的本质,区别每个问题的不同点相同点,确定问题中的对象。

2、OOD:是管理程序内部各部分的相互依赖。为了达到这个目标,OOD要求将程序分成块,每个块的规模应该小到可以管理的程度,然后分别将各个块隐藏在接口(interface)的后面,只通过接口相互交流。

3、OOP:模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。


三、侧重点不同

1、OOA:强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。

2、OOD:是一种解决软件问题的设计范式(paradigm),一种抽象的范式。使用OOD这种设计范式,我们可以用对象(object)来表现问题领域(problem domain)的实体,每个对象都有相应的状态和行为。

3、OOP:通过建立模型而达到的抽象是人们对客体认识的深化。


❷ 什么是面向对象编程

它通过给程序中加入扩展语句,把函数“封装”进编程所必需的“对象”中。面向对象的编程语言使得复杂的工作条理清晰、编写容易。说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言。对象并不与传统程序设计和编程方法兼容,只是部分面向对象反而会使情形更糟。除非整个开发环境都是面向对象的,否则对象产生的好处还没有带来的麻烦多。有人可能会说PHP不是一个真正的面向对象编程的语言, PHP 是一个混合型 语言,你可以使用面向对象编程,也可以使用传统的过程化编程。然而,对于大型项目的开发,你可能想需要在PHP中使用纯的面向对象编程去声明类,而且在你的项目开发只用对象和类。随着项目越来越大,使用面向对象编程可能会有帮助,面向对象编程代码很容易维护,容易理解和重复使用,这些就是软件工程的基础。在基于Web的项目中应用这些概念就成为将来网站成功的关键。 对象(Object)是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。 关于对象要从两方面理解:一方面指系统所要处理的现实世界中的对象;另一方面对象是计算机不直接处理的对象,而是处理相应的计算机表示,这种计算机表示也称为对象。简单的来说,一个人就是一个对象,一个尺子也可以说是个对象。

❸ OOD/OOP是啥意思呀

1 OOD:
面向对象设计(Object-Oriented Design,OOD)方法是OO方法中一个中间过渡环节。其主要作用是对OOA分析的结果作进一步的规范化整理,以便能够被OOP直接接受。

2 OOP:
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。

3 OOA:
Object-Oriented Analysis(面向对象分析方法)是确定需求或者业务的角度,按照面向对象的思想来分析业务。例如:OOA只是对需求中描述的问题,进行模块化的处理,描述问题的本质,区别每个问题的不同点相同点,确定问题中的对象。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。
4 OO:
OO(Object Oriented,面向对象)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。

❹ Java面向对象编程(OOP)是怎么理解

Java是一个支持并发、基于类和面向对象的计算机编程语言。
代码开发模块化,更易维护和修改。
代码复用。
增强代码的可靠性和灵活性。
增加代码的可理解性。
面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象。

❺ 面向对象编程是什么意思

面向对象编程又称OOP,是一种计算机编程架构。本质是以建立模型体现出来的抽象思维过程和面向对象的方法。

OOP的一条基本原则是计算机程序由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展性。OOP=对象+类+继承+多态+消息,其中核心概念是类和对象。

面向对象程序设计方法是尽可能模拟人类的思维方式,使得软件的开发方法与过程尽可能接近人类认识世界、解决现实问题的方法和过程,也即使得描述问题的问题空间与问题的解决方案空间在结构上尽可能一致,把客观世界中的实体抽象为问题域中的对象。


(5)面向对象编程oop扩展阅读

面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。

模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。

❻ 面向对象的程序设计的OOP名词释意

编程范型 对于OOP的准确定义及其本意存在着不少争论。
通常,OOP被理解为一种将程序分解为封装数据及相关操作的模块而进行的编程方式。有别于其它编程方式,OOP中的与某数据类型相关的一系列操作都被有机地封装到该数据类型当中,而非散放于其外,因而OOP中的数据类型不仅有着状态,还有着相关的行为。OOP理论,及与之同名的OOP实践相结合创造出了新的一个编程架构;OOP思想被广泛认为是非常有用的,以致一套新的编程范型被创造了出来。(其它的编程范型例如函数式编程或过程式编程专注于程序运行的过程,而逻辑编程专注于引发程序代码执行的断言)
对面向模拟系统的语言(如:SIMULA 67)的研究及对高可靠性系统架构(如:高性能操作系统和CPU的架构)的研究最终导致了OOP的诞生。

❼ java面试提问:什么是OOP

OOP: Object Oriented Programming,面向对象的程序设计。所谓"对象"在显式支持面向对象的语言中,一般是指类在内存中装载的实例,具有相关的成员变量和成员函数(也称为:方法)。面向对象的程序设计完全不同于传统的面向过程程序设计,它大大地降低了软件开发的难度,使编程就像搭积木一样简单,是当今电脑编程的一股势不可挡的潮流。

(7)面向对象编程oop扩展阅读:

OOP 的优点:使人们的编程与实际的世界更加接近,所有的对象被赋予属性和方法,结果编程就更加富有人性化。

· OOP 的也有缺点,就 C++ 而言,由于面向更高的逻辑抽象层,使得 C++ 在实现的时候,不得不做出性能上面的牺牲,有时候甚至是致命的 ( 所有对象的属性都经过内置多重指针的间接引用是其性能损失的主要原因之一;不过,笔者的局限性在于未使用过 VC++ 外的面向对象语言,所以不是十分肯定,哈哈,有人笑出来了… )。

在计算机速度飞速发展的今天,你可能会说,一丁点的性能牺牲没什么大不了。是的,从面向对象的角度,使的编程的结构更加清晰完整,数据更加独立和易于管理,性能的牺牲可以带来这么多的好处,没有理由不做稳赚的生意吧?

不过,在某些对速度要求极高特殊场合,例如你做的是电信的交换系统,每秒钟有超过百万的人同时进行电话交换,如果,每一个数据交换过程都是一个对象,那么总的性能损失将是天文数字!!

❽ 1、 总结一下面向对象编程(OOP)的基本特征。

面向对象三大特性:封装,继承,多态
面向对象(Object Oriented,缩写为OO)是现代软件技术的精髓。从早期的SmallTalk到如日中天的Java,都渗透着面向对象思想。
OO具有三大特性:封装性、继承性和多态性。想掌握面向对象思想,就必须深入理解
其三大特性。这里我尽量少谈概念,只用一个生活中的例子和一段代码来解释它们。

1、封装性(Encapsulation)
所谓封装,就是将某些东西包装和隐藏起来,让外界无法直接使用,只能通过某些特定的方式才能访问。OO将万物都视为“对象”(Object),任何对象都具有特性和行为。我们将其特性称为“成员变量” (MemberVarible),将其行为称之为“成员函数"(Member Function),被封装的特性只能通过特定的行为去访问。
大家都见过旅馆里常用的一种茶叶吧,就是用纸袋把茶叶包装起来再系是一根线。用的时候只需要将其放在水杯里泡就行。这样的好处是不会将茶叶渣和茶垢弄的满杯子都是。
好!这就是一个封装的例子。
我们喝茶的目的是享受茶叶的香冽;所以茶叶的味道(Flavour)就是茶叶所具有的最
重要特性之一;可是我们无法直接享受它的清香,因为被外面的纸袋“封装”起来了。唯一的办法就是“泡”(Dilute),将茶袋扔在开水中泡,它的味道就出来了,融入水中。
如果我们把袋装茶叶看作一个对象的话,它提供了成员变量Flavour和成员函数Dilute
。并且Flavour是私有(Private)的,我们不能直接把它吞进肚子去,而只能通过成员函
数Dilute才能享受Flavour。
下面用C++代码来描述这个例子:
Class CTea
{
Private:
Cstring m_Flavour; //味道
Cstring m_Color; //颜色
...... //等等其它属性
Private:
Void CTea(); //构造函数
Void ~CTea(); //析构函数
Public:
Cstring Dilute();//沏茶
...... //等等其它方法
}
Cstring CTea::Dilute()
{
//怎样泡出味道来的代码
}
这就是封装。通过将对象的某些属性声明为Private隐藏起来,只能使用其提供的特定
方法去访问。

2、继承(Inheritance)
如果只是封装,那么非面向对象语言也能部分的做到。比如在C中,用结构(Struct)、
VB中用自定义类型(Type)也能封装一些变量。
OO最有吸引力的特性是继承。通俗的说后代具有祖先的某些特点就叫继承,当然后代还可以具有自己独有的特征。举个例子吧,菜刀。
菜刀(cutlery)是钢(Steel)做的,钢是一种金属(Metal),金属则是大千世界里的一种物质(Substance)。所以菜刀的一些特性可以追溯到物质具有的一般属性。正是因为这个道理,MFC中所有类均从CObject继承而来。
这就是继承。菜刀直接继承了钢的特性,钢又继承了金属的特性,......下面的代码描
述了这种复杂而有独特的继承关系:
Class CSubstance
{
Private:
int m_color;
void CSubstance();
void ~CSubstance();
//......(我是学文科的,具体属性说不上来)
}
Class CMetal:Public CSubstance
{
void CMetal();
void ~CMetal();
//......
}
Class CSteel:Public CMetal
{
void CSteel();
void ~CSteel();
//......
}
Class CCutlery:Public CSteel
{
private:
Cstring m_Blade;
void CCutlery();
void ~CCutlery();
//......
Public:
void Cut();
}
这里,CSubstance被称为基类(Base class),其它被称为衍生类(Derived class)。衍生类与基类是“Is kind of”的关系。子类与其祖先类之间复杂的函数调用关系不在本文讨论之列。
继承是一种树状的层次关系。子类在继承祖先类的成员变量和成员函数的同时也可以
定义自己的成员变量和成员函数。比如,Metal 除了继承了Substance的一般特性外,还具有自己的属性诸如可延展性;CCutlery在继承CSteel的特性后还具有自己的成员诸如“刀刃”(Blade)、“锋利”(Sharpness)、行为有如“切”(Cut)等。
面向对象技术是对现实生活的抽象,你可以用生活中的经验去思考程序设计的逻辑。

3、多态性(Polymorphism)
讨论多态之前先要明白什么是“虚拟”(Virtual)。C++/MFC就是用虚拟这种方式实现多态的。为什么“虚拟”这个概念?看下边的例子:
Class Cincect //昆虫类
{
private:
int m_foot; //脚的数量
...... //其它成员变量
private:
void Cincect();
void ~Cincect();
public:
void Bite()//咬人
{
...... //怎样咬人的代码,比如张开嘴啃
}
}
我把Bite(咬)这个动作在基类中定义为一般化动作。可是,不是所有昆虫咬
人的方法都一样(况且还有的根本就不咬人呢,比如蜻蜓),比如蚊子是用嘴那个
吸管叮人而蚂蚁是用嘴去夹。
从昆虫这个类别衍生出以下两个类别:Cant(蚂蚁)、Cmosquito(蚊子)。
class Cant :public Cincect //蚂蚁类
{
......
}
class Cmosquito :public Cincect //蚊子类
{
......
}
它们都继承了Cincect的所有成员,当然也继承了Bite()这个动作。现在就有问题了:
同样继承自昆虫,当我们使用Bite()这个动作时怎么才能区分蚂蚁和蚊子各自的独有的咬人方式呢?
方法之一是用“::”符号指明具体引用的是那一个,但这样明显失去了灵活性;
另一种方法就是“虚拟”。使用关键字virtual将Bite()声明为虚拟函数,然后在每个
衍生类中重新定义,描述它们各自的咬人方法,调用的时候也不会都一种结果啦。于是上边的例子可以改写为:

Class Cincect //昆虫类
{
private:
int m_foot; //脚的数量
...... //其它成员变量
private:
void Cincect();
void ~Cincect();
public:
virtual Bite(){}//咬人,但我们只声明这个成员函数,
//却让它什么动作都不做,让衍生类自己去定
//义各自的咬人方法
}
class Cant :public Cincect //蚂蚁类
{
......
virtual Bite();
}
Cant::Bite()
{
...... //蚂蚁具体的咬人方式
}

class Cmosquito :public Cincect //蚊子类
{
......
virtual Bite();
}
Cmosquito::Bite()
{
...... //蚊子具体的咬人方式
}
所以,虚拟的目的是只在基类中将一般化动作声明一个成员函数的原型而不做
具体定义,让衍生类自己去定义。
这就是面向对象的特征之三:多态性。基类的同一个成员在不同的衍生类中可以具
有不同的形态,更好地抽象和描述大千世界中的诸多“对象”。

1.了解什么是多态性

2.如何定义一个虚方法

3.如何重载一个虚方法

4.如何在程序中运用多态性

面向对象程序设计中的另外一个重要概念是多态性。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。 可以把一组对象放到一个数组中,然后调用它们的方法,在这种场合下,多态性作用就体现出来了,这些对象不必是相同类型的对象。当然,如果它们都继承自某个类,你可以把这些派生类,都放到一个数组中。 如果这些对象都有同名方法,就可以调用每个对象的同名方法。本节课将向你介绍如何完成这些事情。

1.清单9-1. 带有虚方法的基类:DrawingObject.cs

using System;
public class DrawingObject
{
public virtual void Draw()
{
Console.WriteLine("I'm just a generic drawing object.");
}
}

说明

清单9-1 定义了DrawingObject类。这是个可以让其他对象继承的基类。该类有一个名为Draw()的方法。Draw()方法带有一个virtual修饰符,该修饰符表明:该基类的派生类可以重载该方法。DrawingObject类的 Draw()方法完成如下事情:输出语句"I'm just a generic drawing object."到控制台。

2.清单9-2. 带有重载方法的派生类:Line.cs, Circle.cs, and Square.cs

using System;
public class Line : DrawingObject
{
public override void Draw()
{
Console.WriteLine("I'm a Line.");
}
}

public class Circle : DrawingObject
{
public override void Draw()
{
Console.WriteLine("I'm a Circle.");
}
}

public class Square : DrawingObject
{
public override void Draw()
{
Console.WriteLine("I'm a Square.");
}
}

说明

清单9-2定义了三个类。这三个类都派生自DrawingObject类。每个类都有一个同名Draw()方法,这些Draw()方法中的每一个都有一个重载修饰符。重载修饰符可让该方法在运行时重载其基类的虚方法,实现这个功能的条件是:通过基类类型的指针变量来引用该类。

3.清单9-3. 实现多态性的程序:DrawDemo.cs

using System;
public class DrawDemo
{
public static int Main(string[] args)
{
DrawingObject[] dObj = new DrawingObject[4];
dObj[0] = new Line();
dObj[1] = new Circle();
dObj[2] = new Square();
dObj[3] = new DrawingObject();
foreach (DrawingObject drawObj in dObj)
{
drawObj.Draw();
}
return 0;
}
}

说明

清单9-3演示了多态性的实现,该程序使用了在清单 9-1 和清单9-2中定义的类。在DrawDemo类中的Main()方法中,创建了一个数组, 数组元素是DrawingObject 类的对象。该数组名为dObj,是由四个DrawingObject类型的对象组成。

接下来, 初始化dObj数组, 由于Line, Circle和Square类都是DrawingObject类的派生类,所以这些类可以作为dObj数组元素的类型。 如果C#没有这种功能,你得为每个类创建一个数组。继承的性质可以让派生对象当作基类成员一样用,这样就节省了编程工作量。

一旦数组初始化之后,接着是执行foreach循环,寻找数组中的每个元素。在每次循环中, dObj 数组的每个元素(对象)调用其Draw()方法。多态性体现在:在运行时,各自调用每个对象的Draw()方法。尽管dObj 数组中的引用对象类型是DrawingObject,这并不影响派生类重载DrawingObject 类的虚方法Draw()。 在dObj 数组中,通过指向DrawingObject 基类的指针来调用派生类中的重载的Draw()方法。

输出结果是:

I'm a Line.
I'm a Circle.
I'm a Square.
I'm just a generic drawing object.

在DrawDemo 程序中,调用了每个派生类的重载的Draw()方法。 最后一行中,执行的是DrawingObject类的虚方法Draw()。这是因为运行到最后,数组的第四个元素是DrawingObject类的对象。

小结
现在对多态性有所了解之后,你可以在派生类中,实现一个重载基类虚方法的方法。虚方法和重载的派生类方法之间的关系就体现出C#的多态性。

❾ 面向对象程序

面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术[1] 发展到一定阶段后的产物。
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。OOP 主要有以下的概念和组件:
组件 - 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。
抽象性 - 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。
封装 - 也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。
多态性 - 组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。
继承性 - 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或网状结构,这体现了动作的通用性。
由于抽象性、封装性、重用性以及便于使用等方面的原因,以组件为基础的编程在脚本语言中已经变得特别流行。典型的OOP程序设计语言有C++、JAVA(C语言属于纯粹的面向过程的编程语言,以函数为主),Python 和 Ruby 是最近才出现的语言,在开发时完全采用了 OOP 的思想,而流行的 Perl 脚本语言从版本5开始也慢慢地加入了新的面向对象的功能组件。用组件代替“现实”上的实体成为 JavaScript(ECMAScript) 得以流行的原因,有论证表明对组件进行适当的组合就可以在英特网上代替 HTML 和 XML 的文档对象模型(DOM)。

阅读全文

与面向对象编程oop相关的资料

热点内容
量子加密银行 浏览:193
命令方块获得指令手机 浏览:499
学习结束感言简短程序员 浏览:398
android关机闹钟实现 浏览:968
鼠标一键打开文件夹设置 浏览:161
程序员看过来我想静静搞笑视频 浏览:370
curlphp爬虫 浏览:874
python按日期循环 浏览:110
php三个等号 浏览:760
培训班出来的程序员解决问题很差 浏览:963
程序员那么可爱25集 浏览:753
服务器地址和ip地址一样不 浏览:664
php中括号定义数组 浏览:602
php打印堆栈 浏览:516
华为adb命令行刷机 浏览:965
人像摄影pdf 浏览:761
解压文件密码怎样重新设置手机 浏览:1002
高考指南pdf 浏览:695
爬虫python数据存储 浏览:240
u盘怎么取消加密 浏览:431