java OOP面向对象三大特性五大原则 + 低耦合高内聚

OOP面向对象的理解 1.什么是面向对象(OOP) ---- 一切皆对象,面向过程是具体化的面向对象,面向对象是模型化的面向过 面向过程是具体化的,流程化的需要一步步去实现每个过程 面向对象是模型化的,将一个个过程封装成一个模型或者功能 面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们我们使用的就是面向对象了。 面向过程: 优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。 缺点:不易维护、不易复用、不易扩展. 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、.. 阅读详情

面向对象的三大特性是"封装、"多态"、"继承",五大原则是"单一职责原则"、"开放封闭原则"、"里氏替换原则"、"依赖倒置原则"、"接口分离原则"。

什么是面向对象

面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术[1] 发展到一定阶段后的产物。

这里拿 PHP 的 OOP 举个编程实例。

三大基本特性:封装,继承,多态

封装

封装,就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。

继承

继承,指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过 “继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用 基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力。

多态

多态,是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

五大基本原则:SPR, OCP, LSP, DIP, ISP

单一职责原则SRP(Single Responsibility Principle)

是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。

开放封闭原则OCP(Open-Close Principle)

一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。

里式替换原则LSP(the Liskov Substitution Principle LSP)

子类应当可以替换父类并出现在父类能够出现的任何地方。比如:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。

依赖倒置原则DIP(the Dependency Inversion Principle DIP)

具体依赖抽象,上层依赖下层。假设B是较A低的模块,但B需要使用到A的功能,这个时候,B不应当直接使用A中的具体类: 而应当由B定义一抽象接口,并由A来实现这个抽象接口,B只使用这个抽象接口:这样就达到了依赖倒置的目的,B也解除了对A的依赖,反过来是A依赖于B定义的抽象接口。通过上层模块难以避免依赖下层模块,假如B也直接依赖A的实现,那么就可能 造成循环依赖。一个常见的问题就是编译A模块时需要直接包含到B模块的cpp文件,而编译B时同样要直接包含到A的cpp文件。

接口分离原则ISP(the Interface Segregation Principle ISP)

模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来

耦合

简单地说,软件工程中对象之间的耦合度就是对象之间的依赖性。指导使用和维护对象的主要问题是对象之间的多重依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小。

有软硬件之间的耦合,还有软件各模块之间的耦合。
耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。

耦合可以分为以下几种,它们之间的耦合度由高到低排列如下:

  • 内容耦合。当一个模块直接修改或操作另一个模块的数据时,或一个模块不通过正常入口而转入另一个模块时,这样的耦合被称为内容耦合。内容耦合是最高程度的耦合,应该避免使用之。
  • 公共耦合。两个或两个以上的模块共同引用一个全局数据项,这种耦合被称为公共耦合。在具有大量公共耦合的结构中,确定究竟是哪个模块给全局变量赋了一个特定的值是十分困难的。
  • 外部耦合 。一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
  • 控制耦合 。一个模块通过接口向另一个模块传递一个控制信号,接受信号的模块根据信号值而进行适当的动作,这种耦合被称为控制耦合。
  • 标记耦合 。若一个模块A通过接口向两个模块B和C传递一个公共参数,那么称模块B和C之间存在一个标记耦合。
  • 数据耦合。模块之间通过参数来传递数据,那么被称为数据耦合。数据耦合是最低的一种耦合形式,系统中一般都存在这种类型的耦合,因为为了完成一些有意义的功能,往往需要将某些模块的输出数据作为另一些模块的输入数据。
  • 非直接耦合 。两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。

总结
耦合是影响软件复杂程度和设计质量的一个重要因素,在设计上我们应采用以下原则:如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合。

内聚与耦合

内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。
耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。 程序讲究的是低耦合,高内聚。就是同一个模块内的各个元素之间要高度紧密,但是各个模块之间的相互依存度却要不那么紧密。
内聚和耦合是密切相关的,同其他模块存在高耦合的模块意味着低内聚,而高内聚的模块意味着该模块同其他模块之间是低耦合。在进行软件设计时,应力争做到高内聚,低耦合。

Java面向对象编程(OOP) 一、面向过程思想 步骤清晰简单,第一步做什么,第二步做什么…,面向过程适合处理一些较为简单的问题。 二、面向对象思想 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考,最后才对某个分类下的细节进行面向对象的思索。面向对象适合处理复杂的问题,以及多人协作的问题。 三、两种思想的使用场景 对于描述复杂的事务,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来进行分析整个系统。但是具体到微观操作,任然需要面向过程的思路去处理。 四、面向对象编程的三大特性:封装 阅读详情

相关推荐

OOP的三大特性:封装、继承、多态

​​1. 核心概念​​​​2. 示例​​ java 复制 public class Person {     // 私有属性,外部无法直接访问     private String name;     private int age;     // 公共方法:提供对属性的受控访问     public String getName() {         return

zjw541806的博客 702

【设计模式】六大设计原则

类,模块,函数等应该是可以拓展的,但是不可修改对扩展开放,对修改关闭。想要达到这样的效果,我们需要使用抽象实现(接口和抽象类)。因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定。而软件中易变的细节可以从抽象派生来的实现类来进行扩展,当软件需要发生变化时,只需要根据需求重新派生一个实现类来扩展就可以了。举个例子,阅读下面代码。

Patrick_yuxuan的博客 1423

DFT与机器学习协同设计高效光催化剂:从电子结构到性能预测

密度泛函理论(DFT)作为计算材料学的基石,通过求解Kohn-Sham方程,能够在原子尺度精确预测材料的电子结构、能带和光学性质,为理解光催化等能源材料的微观机理提供了关键视角。其核心价值在于替代传统试错法,实现材料性能的理性设计与机理揭示。在工程实践中,面对高通量筛选的需求,机器学习(ML)技术,特别是长短期记忆网络(LSTM)这类擅长处理序列数据的模型,能够学习从材料描述符到复杂性能(如光谱)的映射关系,实现快速性能预测与优化。这种DFT与ML的结合范式,正广泛应用于新能源材料、半导体器件等领域,用于高

weixin_30662937的博客 661

面向对象三大特性五大原则 + 低耦合高内聚

面向对象三大特性五大原则 + 低耦合高内聚 面向对象的三大特性是"封装、"多态"、"继承",五大原则是"单一职责原则"、"开放封闭原则"、"里氏替换原则"、"依赖倒置原则"、"接口分离原则"。 什么是面向对象 面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、...

chenrui310的博客 2323

Amesim基础篇-元件详解-流体库管路

Amesim基础篇-元件详解-流体库管路

2201_75375391的博客 4519

Ansys Circuit新手必看:IBIS模型导入时,Pin Import和Buffer Import到底怎么选?

本文详细解析了Ansys Circuit中IBIS模型导入时Pin Import与Buffer Import的选择策略,帮助SI/PI工程师根据仿真需求做出正确决策。通过对比两种方式的特性差异和应用场景,提供实用的选择指南和性能优化建议,提升信号完整性仿真效率。

weixin_26846533的博客 260

架构原则:高内聚、低耦合(软件设计基本原则)

高内聚、低耦合: 紧密关联的事物应该放在一起(高内聚); 只有紧密关联的事物才应该放在一起(低耦合) 高耦合降低系统重用性; 低耦合降低组件间依赖关系; 设计模式、SOLID原则、正交四原则,都是为了更好的做到高内聚、低耦合。 ......

qfturauyls的博客 1万+

STM32CubeIDE之SHT3X温湿度传感器移植HAL库

有了前面的OLED的学习,这个学习起来也很快。 分以下几步走 1.你要有个温度传感器,SHT3X这个型号的,因为我要讲这个 2.你要有个STM32开发板(我用的是STM32L431RCT) 3.顺便找台电脑下载一个STM32CubeIDE 4.简单的找一个SHT3X的驱动,我是去某宝嫖的,一般卖这个的都有,这个驱动分两个文件,是.c和.h的,我直接把这两个放在下边 读了我上一篇的人,看这个应该很熟悉吧,一样的套路,学习方法是一样的,你就照搬就行 下面是sht3x.c的原文档,里面有个CRC..

qq_47736089的博客 2314

设计模式之设计原则(高内聚,低耦合,设计的目的)

设计模式之设计原则(高内聚,低耦合,设计的目的)

weixin_44750143的博客 639

PromptBio实战:如何用AI对话搞定转录组数据分析(附详细操作截图)

本文详细介绍了如何利用PromptBio平台通过AI对话完成转录组数据分析,无需编程基础即可实现从数据上传到结果解读的全流程。文章包含详细的操作截图和参数配置建议,帮助科研人员快速掌握这一生信分析工具,显著提升研究效率。

weixin_30872157的博客 133

EDA虚拟机分享2020版本(Synopsys2020)

EDA虚拟机分享

亦安的数字小站 9184

Java面向对象

Java面向对象1.Java面向对象是什么2.面向过程和面向对象的优缺点1.面向过程的优缺点:2.面向对象的优缺点:3.面向对象三大特性五大原则1.三大特性:2.五大原则:总结: 1.Java面向对象是什么 OOP(面向对象编程)、OOD(面向对象设计)、OOA(面向对象的分析) Object Oriented Programming     &nb...

逆水行舟,不进则退 5657

优快云 付费专栏连载第 3 篇|Cadence Allegro 8 层板布局实战教程:RK3568 硬件模块化分区布局,DDR4 内存约束区域设置、布局禁忌避坑指南

本文是 RK3568 8 层板高速 PCB 设计实战专栏的第 3 篇,聚焦 DDR4 布局阶段的核心方法论与 Allegro 实操。文章从布局前 6 项前置检查清单入手,系统讲解模块化分区布局的五大黄金原则,并给出 160mm×100mm 样板的 5 大功能分区实战案例。随后以图文步骤演示如何在 Allegro 中创建 ROOM_DDR4 与 ROOM_CPU 约束区域,并强调 Hard Room 硬约束的强制校验作用。

weixin_44520581的博客 1732

java day12 面向对象oop深入之三大特性

当AB中的static去掉,会发生什么变化?(A中public void行左侧出现箭头向上的小圈,B中该行出现箭头1向下的小圈)这就是方法的重载现在删除掉a中的public void那一行。

2302_81093382的博客 1299

PINN求解PDE

PINN求解Dirichlet泊松方程 泊松方程引入 −Δu=f,x∈Ω=(0,1)2-\Delta u=f,x \in \Omega=(0,1)^2−Δu=f,x∈Ω=(0,1)2 u=g,x∈∂Ωu=g,x \in \partial \Omegau=g,x∈∂Ω import torch import time import numpy as np import matplotlib.pyplot as plt import torch.nn as nn def UU(X, order,prob):

forrestguang的博客 3804

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

什么是面向对象OOP(面向对象的三大特性)

什么是面向对象(面向对象的三大特性) 简介 学java的都知道,java语言有三个特性,也可以说是三个优点,就是 1.简单性: java语言相对于C语言,C++来说比较简单。 2.跨平台:java语言编写的代码可以在不同的操作系统运行,即windows、android 、ios、linux等等,也是软件、计算机硬件和软件的桥梁、可以调用硬件资源。 3.纯面向对象:这个就是今天要记录的重点,编程语言...

光头强的博客 6230

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java基础-面向对象三大特性

Java面向对象三大特性,封装,继承,多态

m0_75024203的博客 1290

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

1.面向对象三大特性六大原则

JAVA是一门面向对象的语言,那么其面向对象主要有以下几个特性和原则:面向对象三大特性六大原则面向对象的三大特性是"封装、"多态"、"继承",五大原则是"单一职责原则"、"开放封闭原则"、"里氏替换原则"、"依赖倒置原则"、"接口分离原则"、"迪米特原则(高内聚低耦合)"。 什么是面向对象面向对象(Object Oriented,OO)是软

郑学炜的技术博客 6330

Java中OOP的理解

目录 1. 什么是OOP 2. 面向对象的三大特性: 2.1 封装 2.2 继承 2.3 多态 3. OOP的优缺点 3.1 优点 3.2 缺点 4. OOP设计模式六大原则 1. 什么是OOP 什么是OOP,Object Oriented(面向) Programming,即面向对象编程。很早很早以前的编程是面向过程的,我们提到的面向对象编程的优点,一般是和面向过程编程POP(procedure oriented Programming) 对比的。 2. 面向对象的三大特性: 2.

qq_50864729的博客 2621

Java 核心知识点:面向对象三大特性

封装是指将对象的属性(数据)和方法(操作)封装在一个类中,隐藏对象内部的实现细节,只通过公开的接口(public 方法)向外部提供访问和操作的途径,禁止外部直接修改对象的内部状态,以此保证数据的安全性和代码的可维护性。类比:继承就像“子女继承父母的基因和技能”,子女会继承父母的基本特征(如眼睛颜色、身高)和技能(如说话、走路),同时还能拥有自己的专属技能(如弹钢琴、编程),也可以改进父母的技能(如父母会基础做饭,子女会做西餐)。多态是面向对象编程的终极特性,能极大提升代码的灵活性、可扩展性和可维护性。

2502_94434091的博客 942

究竟什么是面向对象(OOP)?

前言 相信大家在刚接触java语言的时候,就知道这是一门面向对象的语言。学不好java的原因找到了,面向对象的语言,没有对象怎么学。。。 那么究竟什么是面向对象呢? 面向对象,Object Oriented Programming,简称为OOP。说到面向对象,不得不提一嘴面向过程。 面向过程 面向过程是一种自顶而下的编程模式。 把问题分解成一个一个步骤,每个步骤用函数实现,依次调用即可。 举个生活中的例子,假如你想吃红烧肉,你需要买肉,买调料,洗肉,切肉,烧肉,装盘。 需要我们具体每一步去实现,每个步骤相

CoderMy的博客 1万+

Java 面向对象编程OOP的三大特点

OOP三大特点OOP特点 重点1)封装性2)继承性类不能被继承的情况super详解 关于super的重点方法重写3)多态性 面试高频问题重点理解多态性instanceof OOP特点 重点 1)封装性 追求高内聚,低耦合。 ( 耦合就是元素与元素之间的连接,感知和依赖量度。这里说的元素即是功能,对象,系统,子系统。模块。 内聚更为专业的说法叫做功能内聚,是对系统中元素职责的相关性和集中度的量度。 ...

阿星小天地 630

Java中的三大特性

在Java中,继承通过关键字 extends 实现,且遵循单继承原则:一个子类只能有一个直接父类,但允许多层继承(子类继承父类,父类再继承祖父类)。在Java中,封装主要通过访问修饰符实现,常用的访问修饰符有四种,权限从严格到宽松依次为: private (私有)、 default (默认,无修饰符)、 protected (受保护)、 public (公共)。继承是指子类(派生类)继承父类(基类)的属性和方法,子类可以直接使用父类的非私有成员,同时也能扩展自身的功能。

2502_94434091的博客 1528

理解面向对象编程(OOP)

当前主流的编程语言有50种左右,主要分为两大阵营:面向过程编程(FORTRAN、BASIC、C等)与面向对象编程(Objective-C、C++、JAVA等)。   面向对象编程(Object-Oriented Programming,OOP)是划时代的编程思想变革,推动了高级语言的快速发展和工业化进程。OOP的抽象、封装、继承、多态的理念使软件大规模化成为可能,有效地降低了软件开发成本、维护成本...

qq_40301436的博客 474
上一篇: 【机器学习】降维算法 PCA、LDA、LLE、Laplacian EigenmapsI、SOMAP 、 MDS、SNE、TSNE
下一篇: 【机器学习】常用聚类算法 整理
CWS_chen
博客等级 码龄11年 220粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值