面向对象的基本概念和方法

news2024/11/28 20:50:27

面向对象的开发方法在近几十年见得以广泛应用,我们常见的Java语言就是一种典型的面向对象的开发语言。然而,面向对象的概念较为复杂,知识点也很细碎,本文整理了面向对象的基本概念和方法,供大家参考。为了便于读者理解,在解释一些定义时,笔者会通过一些例子,解释较为抽象的概念。

  1. 面向对象的概念

面向对象编程(Object-Oriented Programming,OOP)是一种编程方法,其中程序是由对象组成的。面向对象的编程的核心思想是,将程序中的实体、数据和功能抽象为单独的对象,并在这些对象之间建立联系。

面向对象方法的主要方面包括:

  1. 继承:子类继承父类的属性和方法,并可以添加新的属性和方法。

  1. 封装:对象的内部状态和行为被隐藏在对象内部,只能通过公共的方法访问。

  1. 多态:同一个方法可以有不同的实现,根据不同的对象类型而有不同的行为。

  1. 抽象:通过抽象类和接口来定义对象的公共行为,但不实现该行为。

  1. 关联:对象之间的关系,例如一对多,多对一等。

这些方面可以使程序更易于维护、扩展和重用,并使代码更具可读性和清晰度。面向对象的方法已经成为现代编程的重要方法,并应用于各种领域,如桌面应用程序、移动应用程序、游戏等。

  1. 什么是对象

对象是面向对象编程中的一个核心概念。它代表了现实世界中的一个实体或抽象概念,并将其属性和行为抽象为程序中的数据结构和函数。

例如,一辆汽车可以被表示为一个对象,其属性可以包括品牌、颜色、速度等,行为可以包括启动、加速、停止等。同样,一个学生可以被表示为一个对象,其属性可以包括姓名、年龄、成绩等,行为可以包括学习、考试等。

在面向对象编程中,通过创建对象的实例,可以实现对实体和概念的抽象,使代码更加清晰和可读。

  1. 对象的继承

继承是面向对象编程中的一个重要概念,它允许一个类继承另一个类的特性,从而减少代码的重复编写。

当一个类继承另一个类时,它会自动获得父类的所有属性和行为,并且可以在其上面扩展新的特性或覆盖父类中的某些特性。这样,就可以实现类与类之间的关系,并有效减少代码的重复编写。

例如,可以定义一个类“Animal”,其中包含了动物的基本属性和行为,然后可以定义一个类“Dog”继承自“Animal”类,其中包含了狗的特殊属性和行为。这样,就可以省去了在“Dog”类中重复编写“Animal”类中已有的代码,并且可以很方便地扩展狗的特殊特性。

  1. 对象的封装

封装是面向对象编程中的一个重要概念,它将对象的实现细节隐藏起来,只向外暴露对象的公共接口。

通过封装,可以使得对象的内部实现细节不被外部代码所依赖,从而提高代码的灵活性和可重用性。同时,还可以隐藏对象的内部状态,从而避免因为外部代码对对象状态的不正确使用导致的问题。

在面向对象编程中,可以通过将对象的实现细节封装在私有成员中,并通过公共接口向外暴露对象的行为,从而实现封装。例如,可以定义一个类,其中包含了某个对象的私有成员和公共接口,这样就可以实现对对象的封装。

  1. 多态的定义和分类

多态是面向对象编程中的一个重要概念,指的是同一消息可以被不同的对象响应,产生不同的行为。多态是面向对象编程的一个基本特征,是面向对象编程的重要原则之一。

运行时多态和编译时多态

多态分为两类:

  1. 运行时多态:也称为动态多态,是通过继承和接口实现的。在运行时,程序根据对象的实际类型来决定其行为,因此可以实现不同类型对象的不同行为。

  1. 编译时多态:也称为静态多态,是通过重载实现的。在编译时,程序根据函数的参数类型来决定调用哪个函数,因此可以实现不同参数类型对象的不同行为。

多态的好处包括:

  1. 提高代码的灵活性和可重用性,因为不同类型的对象可以通过多态的机制实现不同的行为。

  1. 提高代码的可读性和可维护性,因为多态可以将类型与行为分离,使得代码更加清晰易读。

  1. 减少程序的代码冗余,因为多态可以通过共同的接口实现不同的行为,而不需要复制相同的代码。

专用多态和通用多态

此外,多态还可以分为专用多态和通用多态,是指面向对象编程中的两种不同的多态类型。

专用多态是指一个特定的多态实现,通常是为了解决某一特定问题而特别设计的多态。它通常是针对特定的数据类型和操作实现的,并且只适用于特定的情况。

通用多态是指一种普遍适用的多态实现,通常是面向对象编程语言中的内置多态实现,可以应用于多种不同的数据类型和操作。通用多态通常是通过继承和接口实现的,可以被用于解决多种不同的问题。

总的来说,专用多态和通用多态都是面向对象编程中的重要概念,它们都可以提高代码的灵活性和可重用性。但是,通用多态的应用范围更广,因为它可以适用于多种不同的数据类型和操作。

  1. 对象的抽象

对象的抽象是指在面向对象编程中,把复杂的对象抽象成简单的对象,从而更容易理解和管理。

抽象的目的是将复杂的对象的内部结构和行为隐藏起来,只暴露必要的接口,使得程序员可以在不了解内部实现细节的情况下使用这个对象。这样可以提高代码的可读性和可维护性。

在面向对象编程语言中,抽象通常是通过继承和抽象类实现的。继承允许程序员定义一个新类,该类继承自一个已存在的类,并可以在新类中重写或添加新的方法。抽象类是一种特殊的类,它不能直接实例化,而是需要由子类来实现。

  1. 对象的关联

对象的关联关系是指在面向对象编程中,多个对象之间的联系。

关联关系分为三种:一对一关系,一对多关系,多对多关系。

一对一关系是指一个对象只和另一个对象相关联,两个对象之间是独立的。

一对多关系是指一个对象和多个对象相关联,多个对象对一个对象是依赖的。

多对多关系是指多个对象之间相互依赖,两两之间是独立的。

这些关联关系可以通过继承,聚合,组合,依赖等方式实现。

  1. 类之间的关系

类之间的关系有六种,分别是关联、组合、聚合、依赖、泛化和实现。

组合关系和聚合关系(关联关系)

这三者说得基本上是一回事。

关联关系(Association)表示两个类的实例之间存在某种语义上的联系。

聚合关系(Aggregation)表示一个类包含另一个类,聚合关系表示为一个类包含另一个类的实例。例如,有一个银行账户类,它包含了一个客户类的实例。

组合关系(Composition)表示一个类是另一个类的组成部分,组合关系表示为一个类是另一个类的组成部分。例如,有一个车辆类,它是由引擎,轮胎,方向盘等组成的。

依赖关系

依赖关系(Dependency)表明一个类依赖于另一个类,依赖关系表示为一个类需要另一个类的支持才能完成其功能。例如,有一个披萨类,它依赖于一个面团类,因为它需要面团才能制作出披萨。

这些关系都可以通过面向对象编程语言来实现,并且可以帮助我们更好地模拟实际世界中的关系。

泛化关系和继承关系

泛化关系(Generalization)和继承关系()是面向对象编程的两个重要概念,二者互为反义。

泛化关系,也称为一般化关系,是指在类层次结构中,子类的特征可以被概括为父类的特征,这样子类对象就可以当做父类对象来使用。泛化关系用箭头从子类指向父类来表示,用于表示一个类的属性和行为的概括。

继承关系(Inherit),指的是子类可以从父类继承一些属性和方法,并且可以重载或扩展这些属性和方法。继承关系是泛化关系的实现方式,也是一种代码复用的方式。

总的来说,泛化关系是一种思想上的概念,而继承关系则是一种实现的方式。在实际的编程中,泛化关系通过继承关系实现。

实现关系

类的实现关系(Implementation)是指两个类之间的关系,表示一个类对另一个类的依赖或替代关系。类的实现关系是在面向对象编程中的常见概念,常常用于描述类的内部实现方式和代码之间的关系。

  1. 统一建模语言UML

UML的定义

UML(Unified Modeling Language)是一种通用的建模语言,旨在为软件工程领域提供一种标准的、统一的建模方法。它是一种图形化的建模语言,用于描述、设计、分析和构建软件系统。

UML为软件工程师提供了许多图形化的工具,用于描述系统的功能、构造、行为和交互。这些工具可以帮助工程师更清晰地理解系统的结构和功能,以及如何在设计过程中进行沟通和协作。

UML具有强大的表示能力,可以描述多种软件工程领域的概念,如类、对象、接口、抽象类、继承、封装、多态、关联、聚合、组合、依赖等。UML图形化工具可以帮助工程师更直观地理解系统的构造和功能,从而提高系统的设计质量和开发效率。

UML的14种图

UML的图分为静态图和动态图两类:

  1. 静态图:主要描述系统的静态结构。例如类图,对象图,包图,组件图,部署图等。

  1. 动态图:主要描述系统的动态行为。例如状态图,活动图,交互图,时序图,用例图等。

UML提供了14种图形化建模工具,它们分别用于描述不同层次的系统结构和功能。下面是UML的14种图:

  1. 用例图:描述系统的功能和用户的需求

  1. 类图:描述系统的类、对象、接口、继承、实现关系

  1. 对象图:描述对象之间的关系

  1. 接口图:描述系统中接口的定义和实现

  1. 包图:描述系统的包、模块和组件之间的关系

  1. 状态图:描述系统的状态和转换

  1. 行为图:描述系统的行为和动作

  1. 活动图:描述系统的工作流程和任务的执行过程

  1. 通信图:描述系统的通信和交互

  1. 部署图:描述系统的部署和配置

  1. 时序图:描述系统的时序和时间关系

  1. 协作图:描述系统的协作和交互

  1. 实现图:描述系统的实现细节

  1. 组件图:描述系统的组件和模块的实现情况

这些图形化工具可以帮助工程师更直观地理解系统的构造和功能。

UML的架构

UML的架构是UML语言的核心部分,它定义了UML语言的模型元素和关系。UML的架构分为四个层次:

  1. 基础模型:定义了UML的基本概念,例如对象,属性,操作,关系,包等。

  1. 核心模型:定义了UML的基本图形元素,例如类,接口,继承,实现,关联,依赖等。

  1. 关系模型:定义了UML的复杂关系,例如泛化,组合,聚合,容纳,真实化等。

  1. 行为模型:定义了UML的动态图形元素,例如状态机,活动图,交互图等。

UML的架构是UML语言的核心部分,是UML语言的一个完整体系,为开发者提供了一个统一的模型元素和关系系统,可以帮助开发者更好地描述和理解系统的构建。

UML的五种视图

UML(Unified Modeling Language)是一种面向对象的建模语言,它提供了多种不同视图以描述软件系统的不同方面。

  1. 逻辑视图:描述系统的逻辑结构,包括类图、对象图等。

  1. 实现视图:描述系统的实际实现情况,包括包图、组件图等。

  1. 进程视图:描述系统的运行状况,包括活动图、状态图等。

  1. 部署视图:描述系统的部署情况,包括部署图。

  1. 用例视图:描述系统如何和用户进行交互,包括用例图。

这五种视图共同描述了软件系统的不同方面,帮助开发人员了解系统的整体结构和运行情况,提高软件开发效率。

总结

UML (Unified Modeling Language) 是一种统一的建模语言,旨在帮助开发人员在软件工程领域中更好地描述、可视化、构建和文档化软件系统。它包含了一组图形元素和规则,可以用来描述软件系统的结构和行为。

面向对象开发是一种软件工程方法,强调以对象为中心进行建模,以对象之间的关系来表示软件系统的结构和行为。面向对象开发的主要概念包括:对象、类、继承、封装、多态和抽象等。

UML 和面向对象开发相结合,可以帮助开发人员在设计阶段更好地理解系统的需求和实现方式,并能更好地沟通和协作。UML 可以用来描述面向对象系统的结构和行为,同时面向对象的开发方法可以帮助 UML 更好地实现对系统的抽象和模拟。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/335575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java笔记-多线程高阶

目录一、多线程1.为什么使用多线程:2.多线程使用场景:3.使用多线程要考虑的因素:二、线程间竞争对象锁的过程三、synchronized关键字1.synchronized的作用:2.synchronized执行效率:3.synchronized实现原理:…

P14 PyTorch AutoGrad

前言:激活函数与loss的梯度PyTorch 提供了Auto Grad 功能,这里系统讲解一下torch.autograd.grad系统的工作原理,了解graph 结构目录:1: require_grad False2: require_grad True3: 多层bakcward 原理4: in…

YOLO-V4经典物体检测算法介绍

在前文我们介绍了YOLO-V1~V3版本都做了哪些事,本文我们继续介绍YOLO-V4版本。YOLO的作者在发表完V3之后,发现YOLO产品被美国军方应用到了很多军事战争当中,这是他所不希望看见的,因此宣布不再继续研究。但历史和科技总是随时间不断…

(第五章)OpenGL超级宝典学习:统一变量(uniform variable)

统一变量 前言 本篇在讲什么 本篇记录对glsl中的变量uniform的认知和学习 本篇适合什么 适合初学Open的小白 适合想要学习OpenGL中uniform的人 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 …

设计模式-组合模式和建筑者模式详解

一. 组合模式1. 背景在现实生活中,存在很多“部分-整体”的关系,例如,大学中的部门与学院、总公司中的部门与分公司、学习用品中的书与书包、生活用品中的衣月艮与衣柜以及厨房中的锅碗瓢盆等。在软件开发中也是这样,例如&#xf…

spring注解的开端(@Component替代bean标签的使用)

目录 一、介绍 1.什么是注解开发? 2.Spring注解的版本 3.基于spring注解的应用 4. Component的细分注解 5.相关注解 二、简单例子讲解 1.类打注解 2.扫描注解放入工厂 3.总工厂取注解调用 4.运行结果 总结: 一、介绍 1.什么是注解开发&…

人工智能聊天工具ChatGPT为Delphi写的诗歌

现在每个人似乎都在谈论 ChatGPT,所以这里有一首关于我们最喜欢的开发工具Delphi的好诗,来自 ChatGPT 生成的 Embarcadero 的 Delphi。 Delphi,哦,Delphi! 作者:ChatGPT Delphi,哦,…

java面试题(十九) Mybatis

4.1 谈谈MyBatis和JPA的区别 参考答案 ORM映射不同: MyBatis是半自动的ORM框架,提供数据库与结果集的映射; JPA(默认采用Hibernate实现)是全自动的ORM框架,提供对象与数据库的映射。 可移植性不同&…

166_技巧_Power BI 窗口函数处理连续发生业务问题

166_技巧_Power BI 窗口函数处理连续发生业务问题 一、背景 在生产经营的数据监控中,会有一类指标需要监控是否连续发生,从而根据其在设定区间中的连续频次来评价业务。 例如: 员工连续迟到天数。销售金额连续上升或者下降。用户连续登陆…

卧槽!一个小时不到就把ChatGPT接入了微信!被问疯了~

大家好,我是鸟哥。一个半路出家的程序员。 最近ChatGPT又火了,一时兴起就把它接入我的微信机器人中。从账号注册到接入微信机器人,全程不到1个小时就搞定了!当然不是我牛逼而是Github上的人才太多了。 大家聊的还是很嗨的&#…

Hadoop自动安装JDK

目录 1、使用xftp工具 在opt目录下创建install和soft文件 ​2、使用xftp工具 将压缩包上传到install文件 3、编写shell脚本 3.1、创建目录来放shell脚本 3.2、创建autoinsatll.sh文件并修改权限 3.3、编写autoinsatll.sh 文件 4、 运行 5、测试 1、使用xftp工具 在opt目…

SpringBoot整合(二)MyBatisPlus技术详解

MyBatisPlus详解 一、标准数据层开发 MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率 MyBatisPlus的官网为:https://mp.baomidou.com/ 1.1 标准CRUD 1.2 新增 int insert (T t)T:泛型&#xff0c…

SAP SD模块相关表的知识笔记

VBAK表 销售凭证(抬头数据) 主键为VBELN: 销售凭证 常用的有: kunnr : 售达方 erdat: 记录创建日期 vdatu: 请求交货日期 VBAP表 (销售凭证:项目数据) 主键为 vbeln销售凭证 和posnr 行号 常用的有&#x…

2年功能测试月薪9.5K,100多天自学自动化,跳槽涨薪4k后我的路还很长...

前言 其实最开始我并不是互联网从业者,是经历了一场六个月的培训才入的行,这个经历仿佛就是一个遮羞布,不能让任何人知道,就算有面试的时候被问到你是不是被培训的,我还是不能承认这段历史。我是为了生存,…

leaflet加载KML文件,显示图形(方法2)

第049个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载KML文件,将图形显示在地图上。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其他来练习 文章目录 示例效果配置方式示例源代码(共66…

YOLOv5-Backbone模块实现

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章地址: 365天深度学习训练营-第P8周:YOLOv5-Backbone模块实现🍖 作者:K同学啊一、前期准备1.设置GPUimport torch from torch impor…

Node=>Express中间件分类 学习4

1.中间件分类 应用级别的中间件路由级别的中间件错误级别的中间件Express 内置的中间件第三方的中间件 通过app.use()或app.get()或app.post()绑定到app实力上的中间件,叫做应用级别的中间件 …

泼辣修图2023最新版本人像美白滤镜手机电脑修图工具

今天,小编分享的是泼辣修图2023最新版本,喜欢追新的朋友赶紧下载使用吧。新版本在图标设计和使用上都有了一些改变,简洁的操作是其一贯的风格。这是一款功能强大的手机及电脑修图app。具体包括了几十种滤镜、曲线调整、颜色调整、皮肤美白、脸…

Biotin-PEG-FITC 生物素聚乙二醇荧光素;FITC-PEG-Biotin 科研用生物试剂

结构式: ​Biotin-PEG-FITC 生物素聚乙二醇荧光素 英文名称:Biotin-PEG-Fluorescein 中文名称:生物素聚乙二醇荧光素 外观:黄色液体、半固体或固体,取决于分子量。 溶剂:溶于大部分有机溶剂,…

学弟学妹少走弯路,超完整算法刷题路线出炉

大家好,我是帅地。 本篇文章主要讲解下面三个事: 1、自己学习算法的一些经历 2、大家学习算法存在的一些普遍问题 3、给大家规划的算法刷题路线 一、算法学习往事 记得当初学了 C 语言就开始刷题了,刷题倒不是面试,而是为了…