面向对象的设计思想

2023-11-15

**面向对象的设计思想(OO思想,Object Oriented)
1.看到一个需求的时候不应该直接写代码。应该先考虑有哪些类。
2.考虑类的时候,类一定是一类事务的描述,不能太局限。
3.考虑类的时候需要考虑主要的类,也就是需要和业务、动作、事件紧密相关的类。
不要考虑类的时候太发散。先考虑主要的类,然后由主要的去推,有点你考虑的类,可能只是
现有类的一个属性。考虑属性的时候,需要注意,如果有属性当前类中的其他属性相比变化度
太高的话,应该考虑剥离出去(那也要具体情况具体考虑,但是一般来说是这样)。

4.属性:不需要把该类的所有属性都声明出来,只需要自己用到的即可。如:人类,属性成千上万,
不用全部写出来,只需要根据需求,声明出自己需要的即可。

5.属性一般会私有,提供get、set方法区操作。因为如果直接把属性的权限开放,那你就很难限定什么
对象可以访问,如果是方法的话,我如果想让某些对象访问,我就可以在get、set中做限制,这样就可以
更好的去控制我自己的属性被访问的权限,至少比属性直接开放要安全,根据面向对象的原则,所以一般属性都会私有。
6.方法:考虑封装方法的时候,你就站在该类的立场去考虑方法。
如:汽车类的方法,假设你是汽车,你觉得你会有哪些方法,以汽车做主语去考虑:如,我可以跑

7.隐藏和封装:减低耦合度。类的单一职责 “自己的事自己处理”,“自己只处理自己该处理的,不要做太多杂事”
不要和自己紧密度不高的类和对象有太多的牵连,只和自己最紧密的类和对象处理。
8.要增加或强化功能的时候,首先应该想的扩展(重写或重载等),而不是修改。聚合而不是继承。
9.当同等类型的,相似类型的类过多的时候,我们又会变得写相同或相似代码很多很多了,这时候我们就该想到了继承。
10.有了继承同等类型的类中的代码是少了很多,但是执行或处理这些对象的驱动类还是得分情况处理很多的不同类对象。
所有在此时,我们就可以采用多态的方式,用父类引用指向子类对象。从而解决了处理多个对象而产生的不同方法了。
*(继承是需要谨慎考虑,因为继承是耦合度提高的重要体现之一)
11.因为继承是很强耦合性的,且继承只能继承一个类,也就是说一个子类有且只有一个父类。所以如果有要继承多个父类的情况,
那就可以用实现。也就是把父类定义成接口。一个类是可以实现多个类的。并且接口也能实现多态。
12.和大家分享一下我对接口和抽象类设计时候的细微的差别:不太会描述,望大家理解。
1>.如果你只是对一类事物和几类事物的明确的公共特性和功能描述,你就用接口。
2>.如果你现在设计一个已经比较明确类中有些是要实现,但是还没想好如何实现,那你就设计成抽象类。

12.*多态:用父类或父接口引用指向子类对象。面向对象的最核心,最精华的思想,也是后期扩展和维护的一个重要指标,但是也不能随意乱用喔,不要过度设计。(多态是要在继承和实现的前提下的)
13.设计是没有对错的,只是要把握一个度,不能不设计,也不要过度设计,根据实际情况设计,设计也不要急于求成,和一步到位,设计是一个循序渐进的,
也不要刻意和条条框框去框死你的项目,不要为设计而设计。

参考
https://blog.csdn.net/xp_zyl/article/details/59638426?utm_source=copy

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面向对象的设计思想 的相关文章

随机推荐

  • Python- 文件处理

    os path splitext file 0 获取文件名 file endswith c 用于检查一个文件名 存储在变量 file 中 是否以 c 结尾 如果是这样 那么它可能是一个 C 语言源代码文件 接下来 os path split
  • float类型做比较

    public class tst private float a 3 0f private float b 0 0f private float c 4 0f private float d 0 0f public void floatCo
  • 软件工程专业如何论文选题?

    Ladies and gentlemen 写论文可谓是读书阶段最为关键的一环 你们是否还记得被论文折磨的日日夜夜 最可怕的不是导师催促你时铁青的面容 而是眼看着DDL Deadline 来临 你的论文题目却让你一筹莫展 作为一个硕士毕业没多
  • 下载和编译 Chrome 时遇到的问题

    下载代码前最基本的代理设置 https blog csdn net siyu77 article details 50916320 对于 ShadowSocks 代理 https proxy 也要设置成 http localhost 108
  • QtextBrowser打印数据不能实时显示的问题

    在编写程序的时候需要从外部读取txt文件的数据打印到QtextBrowser文本框中 但是发现数据是卡一下然后一起出来 而不是一行一行地实时显示 编程环境是vs2017编译器下的集合qt插件的C 界面编程 原来的程序段如下 ui datao
  • 每日十道算法

    最近发现了一个挺厉害的人工智能学习网站 内容通俗易懂 风趣幽默 感兴趣的可以点击此链接进行查看 床长人工智能教程 废话不多说 请看正文 1 两个数组的交集 给定两个数组 编写一个函数来计算它们的交集 时间复杂度 O n 空间复杂度 O n
  • sqoop的在hadoop上的安装和使用

    1 解压安装包 tar zxvf sqoop 1 4 6 cdh5 14 2 tar gz 解压文件夹 mv sqoop 1 4 6 cdh5 14 2 soft sqoop146 移动文件夹到文件目录下 cd opt soft sqoop
  • python爬虫遇到 raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool

    python爬虫遇到ssl证书报错 host port 443 Max retries exceeded with url Caused by SSLError SSLCertVerificationError 1 SSL CERTIFIC
  • Lua调用C#的底层原理

    前言 Lua是一种轻量级的脚本语言 被广泛应用于游戏开发 嵌入式系统和其他需要快速开发和灵活性的领域 而C 是一种面向对象的编程语言 是微软开发的 NET平台的一部分 主要用于Windows应用程序开发 对啦 这里有个游戏开发交流小组里面聚
  • 新版nonebot,go-cqhttp搭建qq机器人保姆级教程

    前言 前段时间QQ进行了更新 所以导致了非手表协议扫码登陆报错的问题 不过好在大佬已经推出rc5版本的go cqhttp 解决了这一头疼的问题 在开始之前 我需要说明一下 本文章是针对没有经验和基础的用户 所以说篇幅可能会长一点 开始 1
  • C++栈区、堆区、全局静态区、代码区的介绍

    示例代码 include
  • elasticsearch 配置 之 discovery.zen.ping.unicast.hosts

    discovery zen ping unicast hosts 192 168 1 12 192 168 1 12 9201 192 168 1 12 9202 192 168 1 13 192 168 1 14 注 端口非9200的节点
  • C语言的运算符及优先级

    C语言的运算符包括单目运算符 双目运算符 三目运算符 优先级如下 第1优先级 各种括括号 如 等 成员运算符 第2优先级 所有单目运算符 如 等 第3优先级 算数运算符 乘法运算符 除法运算符 求余运算符 第4优先级 算数运算符 加法运算符
  • githubC++ 技术方向基础知识总结

    简介 面向 C C 技术方向校招求职者 初学者的基础知识总结 包括语言 程序库 数据结构 算法 系统 网络 链接装载库等知识及面试经验 招聘 内推等信息 github 传送门
  • spring学习笔记(十二)Spring注入内部Bean

    Java 中在类内部定义的类称为内部类 同理在 Bean 中定义的 Bean 称为内部 Bean 注入内部 Bean 使用
  • 带你深入了解NPM——NPM初学者指南

    前段时间 我们邀请了我们 城内 葡萄城 资深开发工程师刘涛为大家分享了一次干货满满的关于Electron线上公开课 在课程过程中有不少同学对于NPM的概念和用法有一些疑问 所以这次我们希望通过这篇文章来解答各位同学的问题 另外在介绍的基础上
  • 2021-11-09

    今天是我写博客的第一天 在这里我想先说一说的对于C语言的看法以及我对于我自己的看法 开通这个博客 最主要的是为了记录我对于C语言学习的不断进步过程以及积累过程 我深知想要学好一门一门新的学科是很艰难的 但是我也知道C语言对于现代发展又是及其
  • uniapp 使用echarts

    uniapp 如何使用 echarts 图标 1 引入 文件 主要这三个文件 2 在使用到的页面 注册使用 3 html 结构 ec 对应绑定的是 data 中的 ec 效果图 全部代码
  • STM32 RT-Thread 系统分析(3)-线程管理之线程切换(系统移植基础篇二)

    线程管理之线程切换 前言 基本信息 前言说明 rt hw context switch to 函数 关键代码分析 还原MSP值 复位序列 LDR r0 SCB VTOR LDR r0 r0 startup stm32f103xg S文件内容
  • 面向对象的设计思想

    面向对象的设计思想 OO思想 Object Oriented 1 看到一个需求的时候不应该直接写代码 应该先考虑有哪些类 2 考虑类的时候 类一定是一类事务的描述 不能太局限 3 考虑类的时候需要考虑主要的类 也就是需要和业务 动作 事件紧