面向对象作为一种广泛使用程序设计方法,首先需要理解两个概念:类和对象。类(Class)是一组共享公共属性和公共行为的对象集合。而对象就是类的一个实例,具有行为和状态,有着清晰的边界。没有公共结构和公共行为的对象,我们不能将它们组合在一个类中。在软件领域中,我们将问题进行分解分类(将大问题分解成许多小问题,每个小问题可以归纳为一类),然后再针对每一类进行分析设计以及实现,这就是广义的面向对象。
面向对象定义:尽量模仿现实世界,在软件中将复杂问题中的实体都作为一个对象来处理,然后根据这些对象的结构和行为再划分出类(即实现问题的分解),最后实现软件的模拟仿真。
面向过程的程序设计都是在想怎样才能一步一步地解决问题,思维方式是过程,或者说是步骤。
而面向对象有以下特点:
抽象:解决复杂性问题的一种基本方法,抽象会重点强调我们应该注意什么,而不应该注意什么!通过抽象我们可以着重实现需关注的细节而忽略一些非实质性或无关紧要的细节,从而能够更好的分析问题解决问题!我们也可以将抽象定义为:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征。抽象的本质就是将问题分解,在面向对象中,所有对象被抽象成各种类,从而让程序员集中关注于功能的实现!
封装:是一种信息隐蔽技术。在开发中,封装可以更通俗的理解为:把代码和代码所操作的数据捆绑在一起,使这两者不受外界干扰和误用的机制。封装代码的好处是每个人都知道怎样访问代码,进而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用。
继承:类和类之间的关系之一,是面向对象系统的最基本要素。继承表明为一个“是一种”的关系。简单理解就是:超类的创建代表泛化,子类的派生代表特化!子类除了能通过继承共享父类的属性和行为之外,还能修改继承于父类的属性和行为,最重要的一点就是:能在继承父类的基础上定义属于子类自身的属性和方法,从而实现扩展!
多态:通过晚绑定(动态绑定)实现的“一个对外接口可以调用不同内在实现方法”的机制。三个必要条件是->要有继承,要有重写,父类引用指向子类对象。
在面向对象开发中,一般都会遵循三方面来分析解决问题:
首先,通过一些好的方法对问题进行分析,寻找问题中的对象实体、类。
其次,基于分析结果使用类和对象抽象在逻辑上构建系统,实际上就是使用面向对象的各种 分解方法来建立系统的逻辑、物理模型和动态、静态模型。
最后,就是运用不同的面向对象语言对设计的结果的实现,即类和对象的实现。
OOA:是一种分析方法,它以可在问题域的词汇表中找到的类和对象的观点来理解、审视需求。在使用UML建模时,OOA阶段主要是通过另一种方法---用例分析来实现系统的用例图以及简单类图和时序图等,既 UML 是将系统用一种统一标准的图形来表示。
OOD:是对OOA的细化,强调的是复杂系统的正确和有效的构建,通过不同的方法来着重于系统的逻辑设计、物理设计。如果说分析是产生系统的类和对象,那么设计则确定类和类之间的关系、对象和对象之间的关系、类的状态转换、模块之间的依赖性等。
OOD与 OOA的区别
OOA偏重于理解问题,描述软件要做什么,而 OOD偏重于理解解决方案,描述软件要如何做
OOA只考虑理想的设计,不关心技术与实现底层的细节,而OOD需要得到更具体详细更接近于真实的代码的设计方案
在设计结果的描述上,OOA 偏重于描述对象的行为,OOD 偏重于描述对象的属性与方法
OOA只关注功能性需求,OOD 还需要关注非功能性需求
OOP:是一种实现方法,程序被组织成对象的协作集合,每一个对象代表某一个类的实例,而类则是通过继承关系联系在一起的。
OOP 阶段必须满足三个标准条件:
使用对象而不是算法(面向过程则是使用算法)作为其基本逻辑构件
任何一个对象都必须是某一个类的实例
类通过继承关系和其它类相关
基于对象编程和面向对象编程:如果某种语言只满足了以上的前两个条件,而第三个条件并没满足(如 JavaScript 语言),那么我们就将该语言称之为基于对象的语言。
对象的属性及其值表现状态,不同的状态会有不同的属性。对象的状态和行为时相互的,行为可以改变状态,状态可以促使行为的产生。
程序设计语言的发展阶段:
第一代语言(1GL) : 二进制机器代码
第二代语言 (2GL) : 汇编语言 (Low Level Language LLL)
第三代语言 (3GL): 高级语言 (HLL)
第四代语言(4GL) : 面向对象语言(00P )。Java属于第四代语言...
分享到:
相关推荐
### 面向对象分析与设计(第3版) #### 知识点概览 《面向对象分析与设计(第3版)》是一本全面介绍面向对象方法论的经典著作,由Grady Booch、Robert A. Maksimchuk、Michael W. Engle、Bobbi J. Young、Jim ...
### 面向对象JavaScript精要 #### 一、书籍概览 本书《面向对象JavaScript精要》由Nicholas C. Zakas编写,是面向对象编程领域中的权威指南之一,尤其针对JavaScript这门语言。作者深入浅出地介绍了面向对象编程的...
《UML面向对象建模与设计答案》是一个包含详尽解答的资源,旨在帮助学习者理解和掌握UML(Unified Modeling Language)在面向对象设计中的应用。面向对象建模是软件开发过程中至关重要的一环,它通过可视化的方式...
《UML面向对象设计与分析》是清华大学出版社出版的一本专著,由牛丽平编著,主要探讨了面向对象设计的重要工具——统一建模语言(UML)。这本书深入浅出地介绍了UML的各种图表及其在软件开发过程中的应用,为读者...
第17章提供了一个面向对象图形用户界面编程的概览,涉及到三种不同的工具包。 第18章深入探讨了面向对象的多线程编程,这是现代编程中的一个重要主题,特别是对于需要并发执行的任务。 第19章讨论了网络编程,即...
### 西电面向对象经典讲义01:面向对象技术概览 #### 一、面向对象技术概述 **面向对象技术**(The Technology of Object Orientation)是计算机科学领域中的一种编程思想和技术方法,它强调以“对象”为中心进行...
面向对象方法课程体系与教学实践,是IT教育领域内一项重要的课题,旨在培养学生掌握面向对象编程的基本理论与实践技能。该课程体系不仅涵盖了面向对象的基本概念、思想、特点和历史,还深入探讨了如何运用面向对象的...
### 设计模式——可复用面向对象软件的基础 #### 核心知识点概览 《设计模式可复用面向对象软件的基础》一书是面向对象设计领域的重要著作,它聚焦于如何构建可复用的面向对象软件,特别是针对C++语言环境下的设计...
#### 一、面向对象系统设计概览 **面向对象系统设计**是一种软件开发方法,旨在通过模仿现实世界中的对象来构建软件系统。这种方法强调对象之间的交互和数据封装,使得软件更加模块化、可重用且易于维护。 #### 二...
### Ruby面向对象设计实践 #### 一、概览与背景介绍 《Ruby面向对象设计实践》是一本关于如何在Ruby语言中实现面向对象编程(Object-Oriented Programming, OOP)的经典著作。该书首次出版于2013年,作者是Sandi ...
面向对象软件构造(第二版)1-6章的知识点概览与深度解析 一、软件品质与外部因素 《面向对象软件构造》第二版的前六章深入探讨了软件工程的核心概念,尤其聚焦于软件质量及其受外部和内部因素的影响(第1章)。软件...
根据给定的C#代码示例,我们可以从中提取并总结出一些重要的面向对象编程概念以及相关的C#语言特性。下面将逐一分析每个代码片段,并解释其中涉及的关键知识点。 ### 代码片段1 #### 代码概览 ```csharp class ...
标题 "猜拳游戏:java面向对象,kotlin面向对象,js面向对象,3个方法开发.zip" 提供了关于一个编程项目的概览,这个项目采用了三种不同的编程语言——Java、Kotlin和JavaScript,来实现同一个猜拳游戏。面向对象...
### JavaScript经典面向对象设计 #### 标题与描述解析 标题“JavaScript经典面向对象设计”指出了本书的主要内容是关于如何使用面向对象编程(OOP)原则和技术来编写高质量、可扩展且可重用的JavaScript应用程序及...
面向对象编程(OOP)概览 #### 定义与演变 面向对象编程(Object-Oriented Programming, OOP)是一种软件开发方法,它强调使用“对象”来设计程序。对象是由数据和操作这些数据的方法组成的实体。在软件开发的历史中...
### JavaScript面向对象编程知识点概述 #### 一、现代JavaScript编程概览 - **JavaScript的演进**:自诞生以来,JavaScript经历了从一个简单的脚本语言到现今被广泛应用于构建复杂应用的强大编程语言的过程。它的...
### 面向对象技术概览 #### 一、面向对象技术简介 面向对象技术(Object-Oriented Technology, OOT)是一种先进的软件开发方法论,它试图通过模仿人类思考和解决问题的方式,来构建更加直观且易于理解的软件系统。...